Sistem Keamanan Sederhana dengan PHP: Deteksi dan Blokir IP Berdasarkan Query Mencurigakan

Dalam pengembangan aplikasi web, penting untuk memiliki sistem keamanan dasar yang mampu mendeteksi aktivitas mencurigakan. Salah satu metode sederhana yang bisa kita terapkan adalah mendeteksi IP pengguna yang mengakses website dengan query mencurigakan, lalu mencatat dan memblokir IP tersebut secara otomatis.

1. Konsep Sistem

  • Deteksi: Sistem memantau query string atau URL parameter untuk kata-kata yang berpotensi berbahaya seperti select, union, sleep, script, dll.
  • Pencatatan: Jika terdeteksi, sistem akan menyimpan IP pengguna ke dalam file teks (misalnya blocked_ips.txt).
  • Pemblokiran: Setiap kali pengguna mengakses website, sistem akan memeriksa apakah IP-nya masuk daftar blokir.

2. Contoh Kode PHP

File: security.php

<?php
// Lokasi file penyimpanan IP yang diblokir
$blockedFile = __DIR__ . '/blocked_ips.txt';
$ip = $_SERVER['REMOTE_ADDR'];

// Blokir akses jika IP sudah tercatat
$blockedIPs = file_exists($blockedFile) ? file($blockedFile, FILE_IGNORE_NEW_LINES) : [];
if (in_array($ip, $blockedIPs)) {
die("Access denied for IP: $ip");
}

// Cek query string untuk aktivitas mencurigakan
$query = $_SERVER['QUERY_STRING'];
$suspiciousPatterns = ['select', 'union', 'sleep', 'script', 'base64_', '--', ' or ', ' and '];

foreach ($suspiciousPatterns as $pattern) {
if (stripos($query, $pattern) !== false) {
// IP mencurigakan, catat ke file jika belum ada
if (!in_array($ip, $blockedIPs)) {
file_put_contents($blockedFile, $ip . PHP_EOL, FILE_APPEND);
}
die("Suspicious activity detected. Access denied.");
}
}
?>

Contoh Penggunaan

Pada setiap file halaman website, cukup tambahkan:

<?php include 'security.php'; ?>

3. Penjelasan

  • $_SERVER['REMOTE_ADDR'] mengambil alamat IP pengunjung.
  • $_SERVER['QUERY_STRING'] memeriksa seluruh parameter GET yang dikirim oleh pengguna.
  • Sistem memeriksa apakah query mengandung pola-pola umum dari serangan seperti SQL injection atau XSS.
  • Jika ditemukan, IP dicatat di file teks dan akses langsung ditolak.

4. Tips Keamanan Tambahan

  • Selalu sanitasi input pengguna.
  • Gunakan Web Application Firewall (WAF) jika memungkinkan.
  • Batasi jumlah request dalam waktu singkat dari IP yang sama (rate limiting).
  • Aktifkan log aktivitas untuk peninjauan lebih lanjut.

Tinggalkan komentar