Extensible Request Validation
01.01.2010 20:08
ASP.NET gelen HTTP isteklerindeki string verilerinde sık kullanılan XSS ataklarına ait kodlar bulunup bulunmadığını denetler. Eğer potansiyel bir girdi bulursa bunu şüpheli olarak tanımlar ve bir hata döndürür.
ASP.NET 4.0 da ise gelen isteklerin tehlikeli bir girdi olup olmadığı konusunda programcının kendi algoritma ve kurallarını denetleyebilmesin izin verebilen mekanizma eklenmiştir. Bunun için System.Web.Util.RequestValidator sınıfı miras alınarak oluşturulabilecek bir sınıfta IsValidRequestedString metodu ezilerek kullanılabilir.
public class CustomRequestValidation : RequestValidator
{
protected override bool IsValidRequestString(
HttpContext context, string value,
RequestValidationSource requestValidationSource,
string collectionKey,
out int validationFailureIndex)
{...}
}
Bu metod içinde tehlikeli olarak değerlendirilen bir girdiye raslanırsa eğer fonksitonda false değerini döndürmek yeterli olacaktır.
IsValidRequestString isimki fonksiyonda bulunan RequestValidationSource isimli parametre sayesinde gelen verinin kaynağına göre mantıksal bir filtre yazmak mükün. Denetlenebilecek girdi kanalları :
-
QueryString
-
Form
-
Cookies
-
Files
-
RawUrl
-
Path
-
PathInfo
-
Headers
Denetleyici sınıf yazıldıktan sonra web.config içinde httpRumtime elemtinin requestValidationType özelliğinde belirtilebilir.
<httpRuntime requestValidationType="Samples.MyValidator, Samples" />
Bu şekilde programcılar son çıkan XSS ataklarına karşın kendi algoritmalarını yazarak uygulama içerisinde denetleneyebileceklerdir.
Microsoft’un XSS saldırılarını önlemek için AntiXSS Library isimli bir komponenti olduğunda burada belirtmiş olalım.
Bu yazı 165 kere okundu.



