Security Checklist: Amankan Aplikasi PHP dari SQL Injection, XSS, dan CSRF

📅 7 Agustus 2026 ☕ 4 min read
Security Checklist: Amankan Aplikasi PHP dari SQL Injection, XSS, dan CSRF

Security Checklist: Amankan Aplikasi PHP dari SQL Injection, XSS, dan CSRF

Bagi seorang pengembang web, membuat aplikasi yang berjalan dengan lancar dan memiliki fitur lengkap barulah separuh dari perjuangan. Separuh perjuangan lainnya—yang tidak kalah krusial—adalah memastikan aplikasi tersebut aman dari serangan siber.

Aplikasi PHP yang dibuat tanpa memperhatikan kaidah keamanan sering kali menjadi sasaran empuk bagi peretas. Padahal, tiga jenis ancaman yang paling sering membobol website—SQL Injection, Cross-Site Scripting (XSS), dan Cross-Site Request Forgery (CSRF)—dapat dicegah dengan menerapkan teknik pengodean yang benar.

Artikel ini menyajikan panduan praktis beserta contoh perbaikan kodenya agar aplikasi PHP yang kamu bangun siap menghadapi ancaman keamanan di dunia nyata.

1. SQL Injection (SQLi)

Apa Itu SQL Injection?

SQL Injection terjadi ketika input dari pengguna (seperti form login atau kolom pencarian) digabungkan secara langsung ke dalam perintah SQL tanpa adanya penyaringan. Akibatnya, peretas dapat menyisipkan perintah SQL ilegal untuk membaca, mengubah, hingga menghapus seluruh isi database.

❌ Kode Rentan (Jangan Ditiru):

PHP

 


 

Jika peretas mengisi kolom username dengan ' OR '1'='1, query akan bernilai selalu benar (TRUE) dan peretas bisa masuk tanpa tahu kata sandi asli!

✅ Perbaikan Kode (Gunakan Prepared Statements):

Solusi mutlak pencegahan SQL Injection adalah menggunakan Prepared Statements (bisa melalui PDO atau MySQLi). Teknik ini memisahkan struktur query SQL dari data masukan pengguna.

PHP

 


prepare($sql);

// 2. Eksekusi query dengan memasukkan parameter secara terpisah
$stmt->execute([$username]);
$user = $stmt->fetch();

// 3. Verifikasi kata sandi yang sudah di-hash secara aman
if ($user && password_verify($password, $user['password'])) {
    echo "Login Berhasil!";
} else {
    echo "Username atau password salah.";
}

2. Cross-Site Scripting (XSS)

Apa Itu XSS?

Cross-Site Scripting (XSS) terjadi ketika aplikasi menampilkan masukan data dari pengguna ke halaman web tanpa melakukan pembersihan (sanitizing/escaping). Celah ini dimanfaatkan peretas untuk menyisipkan skrip beracun (seperti JavaScript) yang berjalan di browser pengguna lain, sehingga dapat mencuri cookie session atau token login.

❌ Kode Rentan (Jangan Ditiru):

PHP

 


Komentar: " . $komentar . "";

Jika pengguna memasukkan , skrip tersebut akan langsung dieksekusi oleh browser pembaca lainnya!

✅ Perbaikan Kode (Lakukan Escaping Output):

Selalu bersihkan karakter-karakter khusus HTML sebelum mencetak variabel apa pun ke dalam tampilan antarmuka.

Cara Manual (PHP Native):

Gunakan fungsi htmlspecialchars() untuk mengubah karakter berbahaya menjadi entitas aman (seperti < menjadi <).

PHP

 


Komentar: " . $komentarAman . "";

Cara Modern (Dalam Framework):

Jika menggunakan Templating Engine seperti Blade (Laravel) atau Twig (Symfony), pencetakan sintaks otomatis melakukan escaping:

HTML

 



Komentar: {{ $komentar }}

3. Cross-Site Request Forgery (CSRF)

Apa Itu CSRF?

CSRF adalah serangan yang memanipulasi korban (yang sedang dalam keadaan login di suatu website) untuk melakukan tindakan yang tidak disengaja—seperti mengubah kata sandi atau melakukan transfer uang—tanpa disadari oleh korban. Peretas memanfaatkan kepercayaan yang telah terbentuk antara situs web dan browser korban.


┌─────────────────┐      1. Korban Buka Web Peretas      ┌─────────────────┐
│     KORBAN      │ ───────────────────────────────────► │  WEBSITE PALSU  │
│ (Sedang Login)  │                                      │   (Milik Peretas│
└────────┬────────┘                                      └────────┬────────┘
         │                                                        │
         │ 2. Skrip Jahat Kirim Request Rahasia                   │
         │    (misal: POST /ganti-password)                       │
         ▼                                                        │
┌─────────────────┐ ◄─────────────────────────────────────────────┘
│   SERVER WEB    │
│  (Aplikasi PHP) │ ──► Request Dianggap Valid Karena Cookie Login Ikut Terkirim!
└─────────────────┘

✅ Perbaikan Kode (Gunakan CSRF Token):

Pencegahan CSRF dilakukan dengan menyertakan sebuah Token Acak Rahasia (CSRF Token) pada setiap formulir yang menggunakan metode POST, PUT, atau DELETE. Server akan mencocokkan token yang dikirimkan form dengan token yang disimpan di session.

1. Buat Token di Halaman Form:

PHP

 


Jumlah Transfer: Kirim

2. Verifikasi Token di Halaman Pemroses:

PHP

 


Ringkasan Security Checklist untuk Aplikasi PHP

Jenis Serangan Dampak Utama Metode Pencegahan Utama
SQL Injection Kebocoran data, pencurian, atau penghapusan seluruh database. Gunakan Prepared Statements (PDO / MySQLi) atau ORM.
Cross-Site Scripting (XSS) Pencurian session cookie, deface halaman, penipuan phishing. Lakukan Escaping Output menggunakan htmlspecialchars() atau Templating Engine.
CSRF Aksi tidak sah mengnamakan akun korban (ubah password, transaksi). Terapkan CSRF Token pada setiap form berjenis POST/PUT/DELETE.

Kesimpulan

Keamanan bukanlah sebuah fitur tambahan yang dipasang di akhir proyek, melainkan sebuah kebiasaan dan standar pengodean yang harus diterapkan di setiap baris kode yang kamu tulis.

Kabar baiknya, jika kamu menggunakan framework PHP modern seperti Laravel atau Symfony, ketiga mekanisme perlindungan di atas sudah aktif secara otomatis (default). Namun, memahami prinsip dasarnya tetap wajib hukumnya bagi setiap pengembang web profesional.


+