Potansiyel olarak tehlikeli bir Ä°stek.Form deÄŸeri istemciden tespit edildi
Her bir mesaj bir ÅŸey benim web sayfa < or >
içeren, bu özel bir durum.
Ben gitmek istemiyor içine tartışma hakkında şıklığı atma bir istisna ya da çökmesini bütün bir web-çünkü birileri girmiş bir karakter bir metin kutusu, ama aradığım zarif bir şekilde halletmek.
Özel durum yakalama ve An error has occured please go back and re-type your entire form again, but this time please do not use <
gösteren profesyonel bana yeterli görünmüyor
Sonrası doğrulama ( validateRequest="false"
) devre dışı bırakılması kesinlikle bu hatayı önlemek olacaktır, ancak sayfa saldırıların bir dizi karşı savunmasız bırakır.
Bir arka yazı HTML kısıtlı karakterler içeren oluştuğunda, Form koleksiyonunda gönderildi değeri otomatik olarak HTML ile kodlanmış olacak.ideal:
Benim .Text
özelliği metin kutusu something & lt; html & gt;
olacak
Bir işleyici bunu yapabilirim bir yolu var mı?
CEVAP
Tüm gönderilen verileri kodlamak için çalışarak yanlış yerden saldırıyorsun bence.
"<
" da diğer dış kaynaklardan, bir veritabanı alanı, bir yapılandırma dosyası, bir yem gibi geliyor. bir not
"<
unencoded dizeleri yazılı çıktı (XSS) HTML için. ne zaman" doğal olarak tehlikeli değildir, belirli bir bağlamda onun sadece tehlikeli: ayrıca, Farklı dizeleri eğer yazarsan tehlikeli, örneğin diğer bağlamlarda kullanıcı tarafından sağlanan bir bağlantı içine bir URL, dize "javascript:
" tehlikeli olabilir. Öte yandan, tek tırnak karakteri eğer bir formdan gönderilen veya bir veritabanı alanı okunan bir isim bir parçası ise SQL enterpolasyon dizeleri sorguladığında tehlikeli, ama son derece güvenlidir.
Sonuç: herhangi bir firma, doğal taş konusunda doğru şartlar altında tehlikeli olabilir çünkü tehlikeli karakterler için rasgele giriş filtresi, yapamazsın. Özel bir anlamı yok, bazı özel karakterler, farklı bir sublanguage içine geçerler çünkü tehlikeli olabilir bu noktada da kodlamak gerekir. HTML bir dize yazarken, HTML içinde özel anlamı olan karakter, Server kullanarak kodlamak gerekir.HtmlEncode. Eğer değişimlerin hesaplanması ve dinamik bir SQL deyimi bir dize geçirirseniz, farklı karakterler (ya da daha iyisi çerçevesinde hazırlanan ifadeleri veya benzeri kullanarak sizin için yapalım) kodlamak gerekir.
Ne zamansen dizeleri HTML geçirmek, validateRequest="false"
ayarlayın HTML-kodlamak her yerde emin olabilirsiniz.
.NET 4 yapmak için biraz daha fazla gerekebilir. Bazen gerekli de web için <httpRuntime requestValidationMode="2.0" />
ekleyin.config (reference).
Potansiyel olarak tehlikeli bir Ä°stek....
Alma "potansiyel olarak tehlikeli...
Nasıl bir istek yükü yerine veri biçim...
Ne kadar tehlikeli bir kayan nokta deÄŸ...
Bir dize değeri ile yansıma olarak aya...