Serangan terhadap website tidak lagi hanya masalah besar korporasi. Data dari Laporan Keamanan Siber 2024 menunjukkan bahwa lebih dari 60 % insiden terjadi pada situs dengan lalu lintas kurang dari 10.000 kunjungan per bulan. Penyerang menggunakan alat otomatis yang mencari celah umum seperti XSS, SQL injection, dan plugin WordPress yang tidak diperbarui. Jika Anda mengelola blog, toko online, atau profil perusahaan, langkah-langkah berikut dapat mengurangi risiko secara signifikan.
Memahami Ancaman Umum
Sebelum melangkah ke solusi, penting untuk tahu apa yang sebenarnya terjadi di balik layar.
- Cross‑Site Scripting (XSS): Penyisipan skrip berbahaya ke dalam halaman yang kemudian dieksekusi oleh browser pengunjung. Contohnya, komentar yang berisi
<script>alert('hacked')</script>dapat mencuri cookie sesi. - SQL Injection: Masukkan perintah SQL melalui formulir input yang tidak difilter, sehingga penyerang bisa membaca, mengubah, atau menghapus basis data.
- Plugin dan Tema WordPress yang Rentan: Sekitar 90 % kerentanan WordPress berasal dari plugin atau tema pihak ketiga yang tidak diperbarui.
- Ransomware pada Website: Malware yang mengenkripsi file situs dan menuntun pembayaran untuk kunci dekripsi.
Langkah Praktis untuk Pengamanan PHP dan Sesi
Jika situs Anda dibangun dengan PHP (termasuk banyak tema WordPress), berikut beberapa praktik yang bisa langsung diterapkan.
1. Gunakan Prepared Statement untuk Query Database
Alih‑alih menggabungkan variabel langsung ke dalam string query, gunakan placeholder yang disediakan oleh PDO atau MySQLi.
// PDO example
$stmt = $pdo->prepare('SELECT * FROM users WHERE email = :email');
$stmt->execute(['email' => $userInput]);
$user = $stmt->fetch();Dengan cara ini, nilai input tidak pernah ditafsirkan sebagai bagian dari perintah SQL, sehingga mencegah SQL injection.
2. Filter dan Escape Output
Data yang diterima dari pengguna harus dianggap tidak tepercaya sebelum ditampilkan kembali.
- Gunakan
htmlspecialchars()untuk mengubah karakter khusus menjadi entitas HTML. - Jika Anda menggunakan framework seperti Laravel atau Symfony, manfaatkan fungsi escape bawaan (mis.
{{ $var }}dalam Blade otomatis di‑escape).
echo 'Jelajahi juga
– Rio Yotto @rioyotto