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.
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
<IfModule mod_security.c>
SecFilterEngine Off
</IfModule>
Link
Semoga artikel PHP Error 403 Forbidden Jika Input Berisi Script bermanfaat