Bagaimana Penerapan CSRF Protection  Pada CodeIgniter
Jurnalcode.com

Penerapan CSRF Protection Pada CodeIgniter

Bagaimana Penerapan CSRF Protection Pada CodeIgniter


Jurnalcode : Apa itu serangan CSRF? Serangan CSRF memaksa browser korban yang masuk log untuk mengirim permintaan HTTP palsu, termasuk cookie sesi korban dan informasi otentikasi lainnya, ke aplikasi web. Misalnya, Anda memiliki situs dengan formulir. Penyerang bisa membuat bentuk palsu di situsnya. Formulir ini bisa berisi input tersembunyi dan data berbahaya. Formulir ini sebenarnya tidak dikirim ke situs penyerang, sebenarnya itu datang ke situs Anda. Berpikir bahwa formulir itu asli, situs Anda akan memprosesnya.

Sekarang anggap saja bentuk penyerang mengarah ke bentuk penghapusan di situs Anda. Jika pengguna masuk dan diarahkan ke situs penyerang dan saat melakukan pencarian, akunnya akan dihapus tanpa mengenalnya. Itu adalah serangan CSRF.

Metode Token

Untuk melindungi dari CSRF kita perlu menghubungkan kedua permintaan HTTP, form request dan form submission. Ada beberapa cara untuk melakukan ini, tapi di field tersembunyi CodeIgniter digunakan yang disebut token CSRF. Token CSRF adalah nilai acak yang berubah dengan setiap permintaan HTTP yang dikirim.

Saat token CSRF dimasukkan ke dalam formulir situs web, itu juga tersimpan di sesi pengguna. Saat formulir dikirimkan, situs web sesuai dengan token, yang dikirimkan dan yang tersimpan dalam sesi. Jika sesuai, permintaan dibuat sah. Nilai token berubah setiap kali halaman dimuat, yang membuat sulit bagi para hacker untuk menebak token saat ini.

Mengaktifkan Perlindungan CSRF di code igniter

Buka file application/config/config.php dan ubah status menjadi TRUE 

    $config['csrf_protection'] = TRUE;  

 

Generate Token

Dengan setiap permintaan, token CSRF baru dihasilkan. Saat objek dibuat, nama dan nilai token ditetapkan.

berikut scriptnya :

$this->csrf_cookie_name = $this->csrf_token_name;  
$this->_csrf_set_hash(); 

kemudian buat function untuk script di atas :

    function _csrf_set_hash()  
    {  
          if ($this->csrf_hash == '')  
            {  
    if ( isset($_COOKIE[$this->csrf_cookie_name] ) AND  
                 $_COOKIE[$this->csrf_cookie_name] != '' )  
               {  
                 $this->csrf_hash = $_COOKIE[$this->csrf_cookie_name];  
              } else {  
                   $this->csrf_hash = md5(uniqid(rand(), TRUE));  
             }  
           }  
        return $this->csrf_hash;  
    }  

 

Pertama, fungsi memeriksa keberadaan cookie. Jika ada, nilai saat ini digunakan karena ketika kelas keamanan di instantiasikan beberapa kali, setiap permintaan akan menimpa yang sebelumnya.

Fungsi juga menciptakan nilai hash yang tersedia secara global dan menyimpannya untuk diproses lebih lanjut. Nilai token dihasilkan. Sekarang harus dimasukkan ke dalam setiap bentuk website dengan bantuan function form_open ().

Metode csrf_verify () dipanggil setiap kali sebuah formulir dikirim. Metode ini melakukan dua hal. Jika tidak ada data POST yang diterima, cookie CSRF telah ditetapkan. Dan jika data POST diterima, ia akan memeriksa nilai yang dikirimkan sesuai dengan nilai tolok ukur CSRF dalam sesi. Dalam kasus kedua, nilai token CSRF dibuang dan dihasilkan lagi untuk permintaan berikutnya. Permintaan ini sah dan seluruh proses dimulai lagi.

 

Semoga bermanfaat . salam codeing

.

Ayo Komentar