Perlindungan Terhadap Serangan SQL Injection, XSS
Berikut adalah tutorial singkat tentang cara melindungi aplikasi PHP Anda dari serangan SQL Injection dan Cross-Site Scripting (XSS) menggunakan contoh kode PHP:
Perlindungan Terhadap SQL Injection:
Gunakan Parameter Binding:
Selalu gunakan parameter binding saat menjalankan query SQL. Ini akan mencegah penyisipan kode SQL berbahaya. Contoh:$username = $_POST['username']; $password = $_POST['password']; $stmt = $pdo->prepare("SELECT * FROM users WHERE username = :username AND password = :password"); $stmt->bindParam(':username', $username); $stmt->bindParam(':password', $password); $stmt->execute();
Validasi Input:
Validasi input dari pengguna sebelum memasukkannya ke dalam query SQL. Gunakan fungsi sepertifilter_var
atauintval
untuk memastikan input yang diterima sesuai dengan yang diharapkan.Gunakan Prepared Statements:
Selalu gunakan prepared statements untuk menghindari penyisipan kode SQL. Jangan pernah membangun query secara manual dengan menggabungkan string.
Perlindungan Terhadap XSS:
Escape Output:
Sebelum menampilkan data dari pengguna di halaman web Anda, pastikan untuk melewati fungsihtmlspecialchars
untuk menghindari eksekusi kode JavaScript yang tidak aman. Contoh:$user_input = $_POST['user_input']; echo htmlspecialchars($user_input, ENT_QUOTES, 'UTF-8');
Content Security Policy (CSP):
Atur header kebijakan keamanan konten (CSP) di header HTTP Anda untuk mengontrol sumber daya yang diizinkan untuk dimuat di halaman Anda.Input Validation:
Validasi masukan dari pengguna. Hanya izinkan karakter yang diperlukan dan hindari input yang mencurigakan.Escape Data Before Insertion:
Sebelum memasukkan data ke dalam database, pastikan data tersebut telah di-escape dengan benar. Gunakan fungsi sepertimysqli_real_escape_string
untuk MySQL.
Itulah beberapa langkah umum untuk melindungi aplikasi PHP Anda dari SQL Injection dan XSS. Ingat selalu untuk memeriksa keamanan kode Anda secara berkala dan mengikuti praktik terbaik keamanan web.