CSRF Açığı

CSRF : Cross Site Request Forgory

Siteler arası istek gönderebilme açığıdır.

A sitesinde, /paroladeğiş?yeniparola=xxx diğer bir istek ile şifre değiştirildiğini fark edelim.

B sitesinde <img src=”A/paroladeğiş?yeniparola=12345″/> şeklinde bir kullanımla, A sitesindeki kullanıcının parolasını değiştirebiliriz.

Dikkat edelim ki, A sitesinde kullanıcı oturum açmış olmalıdır. Bu işlem B’ye giren her ayrı kullanıcı için gerçtir.

Ancak isteklerin GET metodu dahilinde de olması gerekmez. Bir Ajax formu ile B sitesi, POST metodu da kullanılabilir.

Çözüm Yolu

Access-Control-Allow-Origin headeri kesinlikle gönderilmemelidir. Modern tarayıcılar bu headeri gördüğü müddetçe güvenliği sağlarlar. Ardından aşağıdaki iki yöntemden birini kullanmalısınız.

CSRF – Token

Form gönderilmeden önce rastgele bilet oluşturulur. Formun alıcı sayfası, bu biletin aynısını bekleyerek çalışır

Captcha

Form ve Form alıcı sayfaya bir captcha sistemi kurulur.