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

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.

ZeberuS - 03.12.2007

.htaccess Ile bunlari XSS,XSRF Kapatmanizda Mümkün Olabilir ,

Ferruh Mavituna - 16.04.2007

SQL icin prepared statementlar kullanin mumukun degilse,

integer' in integer oldugundan emin olur isnumeric() ve stringlerde de tek tirnakin iki tek tirnak ile replace edildiginden Replace(param,"'","''")

XSS icinde Server.HTMLEncode() kullanidiginizdan emin olun.

Oguzhan Eren - 16.04.2007

tesekkür ederim cevabini için ama ben ASP için demistim

koray - 15.04.2007

Oguzhan Eren,

Ferruh Mavituna diyor ki;
eger bunlari bloklarsaniz hatali bir is yapiyorsunuz demektir diyor.
www.phpguvenligi.org'dan sql injection,xss ve digerlerinden korunmak için ne yapabiliriz,bir çok döküman mevcut.

iyi günler

Oguzhan Eren - 13.04.2007

Güzel bir döküman olmus

union bloklarsaniz sonsuz bir döngü olur demissiniz pek anlamadim:(

ASP de saglam bir SQL Injection koruma ve XSS koruma için kod vermeniz mümkünmüdür
kisa bir sey olsa bile ondan uyarliyarak yazabilirim

- 11.04.2007

guzel yazi da senin rightbase kaymis sanki

koray - 10.04.2007

Himm,anladim yorumun için tesekkür ederim.

Ferruh Mavituna - 10.04.2007

Genel olarak filtreleme whitelisting olmali yani sadece gereken karakterleri kabul etmeli ve dogerlerini almamali.

Dedigim gibi XSS icin kullanidginiz web dili HTML Encode u ne ile yapiyorsa o, SQL icinse prepared statement. Eger union vs. bloklama kalkarsaniz sonu gelmez bir dongu, hataya cok megilli bir is yapiyor olacaksiniz.

koray - 10.04.2007

Peki,karakterleri filtrelersek */<UNION% gibi bir ise yarar mi ,karakterleri hex'e çevirerek filtreden geçmek isteyenler bu karakterleri filtrelersem xss,sql vs..'den korunabilir miyim?Zaten tam güvenlik yoktur bunun yaninda hostta da güvenlik saglanmali ama benim sorum sadece belirli karakterleri filtrelersen yukaridaki gibi bir nevi korunmus olur muyum?

Tesekkürler.

Yorum Yazın


Tüm yorumlar onaydan geçmektedir, bu işlem en uzun 30 dk. sürecektir. E-mail adresleri yeni yorumları bildirme harici hiç bir başka amaçla kullanılmamaktadır ve sitede gözükmemektedir.



Captcha Kodu