Giriş yapmadınız.

Duyuru

TÜRKÇE KİTAP DUYURUSU:
Laravel 5 : Laravel 5.1 Güzelliği (Türkçe)
Vue.js 2 : Vue.js 2 Majesteleri (Türkçe)

#1 05.01.2013 17:57:01

m.erin
Üye
Yer: Konya
Kayıtlı: 26.12.2012
Mesajlar: 165
Website

[Nasıl] Laravel ile CSRF saldırılarını bertaraf etme

CSRF (Cross Site Request Forgery) saldırıları kullanıcı izni olmadan GET veya POST metodları ile bilgi gönderilmesidir.
http://en.wikipedia.org/wiki/Cross-site_request_forgery

Laravel ile bu saldırıları bertaraf etmek çok basit ve zahmetsiz.

application/routes.php dosyamızı açtığımızda

Route::filter('csrf', function()
{
	if (Request::forged()) return Response::error('500');
});

CSRF saldırıları için düzenlenmiş bu filtreyi görebilirsiniz. İşte bu filtre ve yapacağımız birkaç küçük işlem ile bu konudaki güvenliği sağlamış oluyoruz.

Formdan gelen verilerinizi işlediğiniz controller dosyanızdaki veya base controller içerisindeki __construct() yordamı içerisinde bu filtreyi tanımlıyoruz. Kendi projelerimde base controller üzerinde bir kez tanımlamayı tercih ediyorum.

	public function __construct()
	{
		$this->filter('before', 'csrf')->on('post');
		parent::__construct();
	}

Bu kodu ekledikten sonra herhangi bir formu gönderdiğinizde 500 hatası alacaksınız. Çünkü formun kullanıcı tarafından gönderildiğini bildiren anahtar formda yok.
Bunu da formumuzun içerisinde şu şekilde tanımlıyoruz:

echo Form::open('user/profile', 'POST');
// CSRF anahtarını içeren gizli inputu oluşturur
echo Form::token(); 
echo Form::text('username');
echo Form::close();

Form::token() nesnesini ekledikten sonra tekrar formu gönderdiğinizde hata almayacak ve bu açığı kapatmış olacaksınız.

Umarım faydalı olur, başarılar...

Çevrimdışı

#2 05.01.2013 19:36:54

sineld
Yönetici
Yer: Bursa
Kayıtlı: 26.12.2012
Mesajlar: 1,419
Website

Çevrimdışı

Forum alt kısmı