Atasi Error The action you have requested is not allowed

Saya mengaktifkan opsi csrf_protection di file konfigurasi codeigniter, dan menggunakan function form_open () untuk membuat formulir saya. tetapi ketika saya mengirimkan formulir, kesalahan ini terjadi: 

The action you have requested is not allowed

Seperti biasa, saya menanyakan hal ini kepada mbah google, dan topik terkait error tersebut ternyata pernah diulas di stackoverflow. Di situ dijelaskan bahwa ada masalah bagian pengaturan CSRF CodeIgniter pada file config.php, dan saya juga baru ingat bahwa 2 hari sebelumnya saya pernah merubah ke mode "TRUE" pengaturan tersebut.

/*
|--------------------------------------------------------------------------
| Cross Site Request Forgery
|--------------------------------------------------------------------------
| Enables a CSRF cookie token to be set. When set to TRUE, token will be
| checked on a submitted form. If you are accepting user data, it is strongly
| recommended CSRF protection be enabled.
|
| 'csrf_token_name' = The token name
| 'csrf_cookie_name' = The cookie name
| 'csrf_expire' = The number in seconds the token should expire.
*/
$config['csrf_protection'] = TRUE; //<-- Kesalahan saya adalah tidak tau alasan mengubahnya menjadi "TRUE"
$config['csrf_token_name'] = 'relt';
$config['csrf_cookie_name'] = 'csrf_cookie_name';
$config['csrf_expire'] = 7200;

akhirnya saya kembalikan ke pengaturan default menjadi "FALSE". Hasilnya solved, saya bisa posting lagi.

Netizen

Komentar 1

Maaf apakah situsnya tetap aman kalau dibuat false, saya jg mengalami hal ini diweb kantor saya.

Tanggapan 1

Dokumentasi codeIgniter menjelaskan, bahwa CSRF digunakan untuk memfilter inputan field pada formulir, dengan cara mengaktifkan CSRF (membuatnya TURE), maka aturan main default regular expression CSRF akan berlaku, artinya inputan yang diizinkan hanya jenis karakter yang sudah ditentukan, seperti di bawah ini

$config['csrf_exclude_uris'] = array(
        'api/record/[0-9]+',
        'api/title/[a-z]+'
);

Sebenarnya metode ini bisa juga dilakukan di sisi client (front end), menggunakan attribut pattern. Hanya saja mudah bagi seorang hacker untuk memanipulasi ini. Oleh sebab itu perlu antisipasi lebih mengatasi hal semacam ini, sehingga CI menediakan config tersebut untuk mengatasinya di sini backend, keamanan berlapis seperti ini sangat direkomendasikan.

Nah, sekarang kembali kepada kasus yang sedang dihadapi. Contoh, pada kasus ini, user yang bisa menginputkan sintak2x javascript adalah admin (untuk membuat postingan) artinya untuk bisa mendapatkan fitur tersebut kan harus melalu rule user level, disini saya sudah cukup menghandle dengan itu. Jadi tidak ada yang bisa input javascript kecuali saya.

Kedua, sisi klien, saya sudah menggunakan markdown untuk memfilter segala bentuk inputan dari komentar klien, di markdown tidak ada kesempatan untuk menginputkan sintak2x javascript, karena semuanya bakal di convert kedalam sintak markdown.

Jadi saya membuatnya FALSE, karena untuk kepentingan pribadi, jika Agan berurusan dengan aplikasi klien, alangkah baiknya jika mengikuti rekomendasi keamanan dari CI.

Sekian dan terimakasih.

jika km masi blm menemukan referensinya..
aku punya referensinya, km cukup ganti form input html mu dgn form input codeigniter
<?= form_open('login'); ?>

ilhamcode


Post a Comment

Previous Next

نموذج الاتصال