CSRF Koruması

Titan, CSRF (Cross Site Request Forgering) saldırılarından korunmak için token yöntemini kullanır. Bunun için önce sistem tarafından bir token değeri oluşturulur ve session'a atılır. Aynı token değeri HTML form içerisindeki hidden tipinde bir elemana atanır. Formun post edildiği sayfada, formdan gelen token ile session'da bulunan token değerleri kontrol edilir. Eşitlik durumunda true, aksi durumda false döndürür.

Token Oluşturma

HTML form içerisinde token oluşturmak için csrf_generate() fonksiyonu kullanılır.

- Form Helper ile kullanım örneği;

echo form_open('iletisim', ['method' => 'post']); // Form tagı açma
echo form_input('adsoyad'); // Ad ve Soyad alanı
echo form_input('email'); // E-Posta alanı
echo form_hidden('token', ['value' => csrf_generate()]); // Hidden tipinde CSRF token alanı
echo form_submit('submit', 'Gönder'); // Buton
echo form_close(); // Form tagı kapatma

- HTML kullanım örneği

<form method="post">
	<input type="text" name="adsoyad">
	<input type="text" name="email">
	<input type="hidden" name="token" value="<?php echo csrf_generate(); ?>">
	<input type="submit" value="Gönder">
</form>

Token Kontrolü

Formdan gelen verileri işleme sokmadan önce, token değerinin session'daki token ile aynı olup olmadığı kontrol edilmelidir. Bunun için csrf_check() fonksiyonu kullanılır. Formdan gelen token değeri, fonksiyona parametre olarak verilir.

if(csrf_check($this->input->post('token'))) {
	echo 'Token doğru';
} else {
	echo 'Token doğru değil';
}