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:

  1. 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();
  2. Validasi Input:
    Validasi input dari pengguna sebelum memasukkannya ke dalam query SQL. Gunakan fungsi seperti filter_var atau intval untuk memastikan input yang diterima sesuai dengan yang diharapkan.

  3. Gunakan Prepared Statements:
    Selalu gunakan prepared statements untuk menghindari penyisipan kode SQL. Jangan pernah membangun query secara manual dengan menggabungkan string.

Perlindungan Terhadap XSS:

  1. Escape Output:
    Sebelum menampilkan data dari pengguna di halaman web Anda, pastikan untuk melewati fungsi htmlspecialchars untuk menghindari eksekusi kode JavaScript yang tidak aman. Contoh:

    $user_input = $_POST['user_input'];
    echo htmlspecialchars($user_input, ENT_QUOTES, 'UTF-8');
  2. 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.

  3. Input Validation:
    Validasi masukan dari pengguna. Hanya izinkan karakter yang diperlukan dan hindari input yang mencurigakan.

  4. Escape Data Before Insertion:
    Sebelum memasukkan data ke dalam database, pastikan data tersebut telah di-escape dengan benar. Gunakan fungsi seperti mysqli_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.