CSRF, XSS, SQL Injection den Korunma ve Diger Korunma Geyikleri

10-4-2007

Son zamanlarda web güvenliği konusunda herkes yeni bir "otomatik"  korunma mekanizması çıkartıyor.

- CSRF dan korunma
- XSS' den korunma
- SQL Injection' dan korunma

Kriptolojide ilk kurallardan biri tabiri caizse "kıçınızdan bir algoritma çıkarmayın" dır (eğer adınız Bruce Schneier değilse). Yani kendi kendinize bir bir şifreleme algoritması üretip sonra onun güvenli olduğunu düşünmemeniz ya da mevcut bir algoritma üzerinde oynama yapıp onun güvenli olduğunu düşünmemenizdir.

Bu güzel bir örnek ve nedenleri çok basit. Mevcut şifrelemelerin hepsi senelerdir test edilmiş ve açığı bulunanlar geliştirilmiştir. Bunları geliştiren bir çok kişinin bu konuda yoğun deneyimi olmasıdır.

Neden bunun web güvenliği uygulanabileceğini düşünmüyor insanlar bilmiyorum. Web güvenliği de yıllardır gelişen bir yapı ve tüm düzgün web dilleri gerekli fonksiyonları sunuyorlar. Tek yapmanız gereken güzel bir şekilde bunları kullanmanız.

Kendi filtrenizi yazmak, özellikle de zaten hazır filtrelerden farklı şekilde kafanızdan yazmak büyük bir gaflettir. Gene aynı şekilde ne yaptığınızı çok iyi biliyorsunuz kabul edilebilir ama kesinlikle bu kod için black-box ve white-box testleri birilerine yaptırın.

Bunun harici herkes biliyor ki SQL Injection' a karşı "Prepared Statement" en iyi korunma yöntemleri, XSS' e karşı HTMLEncode() ya da benzerleri, CSRF' ye karşı session ile ilişkili token imlemantasyonu ya da ASP.NET ise UserKey en iyi korunma yöntemleri. Tamam kabul ediyorum bir çok dilde CSRF' ye karşı kendiniz bir şeyler yazmak zorundasınız. Ancak sorunu anladıysanız bu XSS ya da SQL Injection a göre çok daha temiz ve hataya kapalı bir konsept.

Son olarak XSS' e karşı Javascript ile bir çözüm üretmek ek bir defans katmanı olarak görülebilir ki (ki bence bu bile yanlış) ama kesinlikle bir korunma olarak görülmemeli.

Gene not  etmek gerekirki araştırma-geliştirme adına bu hareketlerin hepsi uzun vadede faydalı olacaktır ve kesinlikle desteklenmelidir ama buradaki gizli tehlike olan "iyi güvenlik pratiklerinden" kaçıp bunları uygulamak büyük bir hata olacaktır.

Recent Blog Posts

See all of the blog posts