⚠️ XSS (Cross Site Scripting)
XSS adalah celah keamanan yang memungkinkan penyerang menyisipkan script jahat ke halaman web yang dilihat user lain. Biasanya terjadi karena input user tidak disaring dan langsung ditampilkan.
💻 Contoh Kode PHP + Penjelasan
<?php // Baris 1: Contoh input user yang berbahaya $user_input = "<script>alert('XSS!')</script>"; // Baris 2: Menggunakan htmlspecialchars() untuk mencegah script berjalan echo htmlspecialchars($user_input, ENT_QUOTES, 'UTF-8'); ?>
🔎 Penjelasan:
Baris 1: Variabel $user_input
berisi input yang berbahaya (script).
Baris 2: Fungsi htmlspecialchars()
mengubah karakter khusus menjadi teks biasa, sehingga script tidak dieksekusi.
🔒 Tambahan Perlindungan: CSP
Content-Security-Policy: default-src 'self'; script-src 'self' https://trusted.cdn.com;
🔎 Penjelasan: CSP adalah header keamanan yang membatasi sumber script. Hanya script dari server sendiri atau CDN tepercaya yang boleh dijalankan.
📝 Validasi Input (JavaScript)
const userInput = document.querySelector('#input').value; if (/^[a-zA-Z0-9 _-]*$/.test(userInput)) { // input aman } else { alert('Input tidak valid!'); }
🔎 Penjelasan:
Baris 1: Ambil nilai dari form input.
Baris 2: Regex untuk mengecek apakah hanya huruf, angka, spasi, _ dan -.
Baris 3-5: Kalau valid, lanjut; kalau tidak, munculkan peringatan.
🔧 Gunakan Library Sanitizer (DOMPurify)
<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/purify.min.js"></script> <script> const clean = DOMPurify.sanitize(userInput); document.getElementById('output').innerHTML = clean; </script>
🔎 Penjelasan:
- Baris 1: Import DOMPurify (library yang membersihkan input).
- Baris 2: Variabel clean
berisi input yang sudah aman.
- Baris 3: Output aman ke halaman (script jahat dibuang!).