CSRF (Cross-site Request Forgery) adalah salah satu jenis serangan keamanan web untuk mendapatkan atau mengirim request yang dieksekusi atas wewenang korban, tanpa dikehendakinya. Serangan CSRF dapat terjadi disebabkan karena tidak ada mekanisme perlindungan token keamanan (request token) pada sebuah website, sehingga penyerang dapat mengirim suatu request (misal, submit suatu form) secara ilegal yaitu tidak melalui form yang ada di website tersebut secara langsung. Jika korban tidak hati-hati, serangan CSRF dapat sukses dilakukan denganmemaksa pengguna untuk melakukan permintaan mengubah data seperti profil pribadi, alamat email, bahkan yang lebih berbahaya melakukan transaksi transfer dana.
Konfigurasi
Untuk mengaktifkan CSRF Protection pada Codeigniter 3, perlu dilakukan pengaturan di file /application/config/config.php
$config['csrf_protection'] = TRUE; //set TRUE untuk mengaktifkan proteksi csrf $config['csrf_token_name'] = 'csrf_test_name'; //nama token csrf yang akan digunakan $config['csrf_cookie_name'] = 'csrf_cookie_name'; //nama cookie csrf yang akan digunakan $config['csrf_expire'] = 7200; //jangka waktu csrf token expired, dalam detik $config['csrf_regenerate'] = TRUE; //jika true maka token csrf akan digenerate ulang untuk setiap request
<form method="POST" action="<?=site_url('register/index')?>" class="form-horizontal" role="form"> <input type="hidden" name="<?=$this->security->get_csrf_token_name();?>" value="<?=$this->security->get_csrf_hash();?>" style="display: none"> . . . . </form></div> <div>
var csfrData = {}; csfrData['<?php echo $this->security->get_csrf_token_name(); ?>'] = '<?php echo $this->security->get_csrf_hash(); ?>'; $.ajaxSetup({ data: csfrData });</div> <div>
$.ajax({ url: '<?php echo site_url("post/update") ?>', type: 'POST', dataType: 'json', data: { data: 'data', <?php echo $this->security->get_csrf_token_name(); ?>: '<?php echo $this->security->get_csrf_hash(); ?>' }, });</div> <div>
$config['csrf_exclude_uris'] = array("controllerx.*+");
Konfigurasi di atas berarti melakukan disable proteksi csrf pada alamat url yang dimulai dengan: controllerx, contonya “http://situs.com/controllerx/msg/1