SORU
17 EYLÜL 2008, ÇARŞAMBA


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
17 EYLÜL 2008, ÇARŞAMBA


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).

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • bobinire

    bobinire

    24 EYLÜL 2006
  • Attempts at least

    Attempts at

    1 Ocak 2007
  • Unbox Therapy

    Unbox Therap

    21 Aralık 2010