PHP Error 403 Forbidden Jika Input Berisi Script

Pernahkah Anda mengalami masalah PHP Error 403 Forbidden, ketika menyimpan data ke database? Masalah ini muncul karena pihak server mengkonfigurasi aturan mod_security di server mereka.

Apa itu ModSecurity

ModSecurity sering disebut ModSec merupakan salah satu Web Application Firewall (WAF) yang bersifat opensource. Bekerja sebagai module pada Apache, mod_security berfungsi mendeteksi dan mencegah serangan terhadap aplikasi web. Modsecurity merupakan WAF yang paling banyak digunakan.

PHP error 403 forbidden modsecurity secfilter

Beberapa manfaat ModSecurity

Misal Anda memiliki aplikasi yang rentan terhadap serangan injeksi SQL. Penyerang dapat mencoba menghapus semua record dari tabel MySQL seperti ini:

http://www.example.com/login.php?user=tom';DELETE%20FROM%20users--

Anda bisa mencegahnya dengan fungsi SecFilter

SecFilter "delete[[:space:]]+from" 

Setiap kali permintaan tertangkap oleh fungsi SecFilter Anda, sesuatu seperti ini dicatat ke audit_log Anda:

========================================
Request: 192.168.0.207 - - [04/Jul/2006:23:43:00 +1200] "GET /login.php?user=tom';DELETE%20FROM%20users-- HTTP/1.1" 500 1215
Handler: (null)
----------------------------------------
GET /login.php?user=tom';DELETE%20FROM%20users-- HTTP/1.1
Host: 192.168.0.100
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.0.4) Gecko/20060508 Firefox/1.5.0.4
Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive
mod_security-message: Access denied with code 500. Pattern match "delete[[:space:]]+from" at THE_REQUEST
mod_security-action: 500

HTTP/1.1 500 Internal Server Error
Last-Modified: Fri, 21 Oct 2005 14:30:18 GMT
ETag: "8238-4bf-833a5280"
Accept-Ranges: bytes
Content-Length: 1215
Connection: close
Content-Type: text/html

Untuk mencegah lebih banyak serangan injeksi SQL, kita dapat menambahkan beberapa aturan lain:

SecFilter "insert[[:space:]]+into"
SecFilter "select.+from"
SecFilter "drop[[:space:]]table"

Arahan berikut membantu mencegah serangan cross-site scripting:

SecFilter "<script"
SecFilter "<.+>"

SecFilter “<script” ini yang membuat setiap kali menyimpan data ke database yg berisi kode google analytic selalu 403 Forbidden

Menonaktifkan ModSecurity

Untuk mematikan fungsi modsecurity, buka .httaccess dan tambahkan kode ini

SecFilterEngine Off

Semoga artikel PHP Error 403 Forbidden Jika Input Berisi Script bermanfaat

Leave a Comment