En iyi yanıtlayıcılar
Asp.net " A potentially dangerous Request. " Hatası

Soru
-
merhaba
ben sayfamda html karakteli metinlerin girilmesi için bir editör koydum.Bu sayfada yaılar kalın yapılıp örneğin kaydediliyor.Sayfamın başına ValidateRequest="false" ekledim.Localde çalışırken bu şekilde problem yok. Yalnız projeyi sunucuya atınca hata veriyor.Visual Studio 2008 de çalışıyorum.Hatayı aşağıda belirttim.Bunun önlemek için ne yapmam gerek acil lütfen !
A potentially dangerous Request.Form value was detected from the client (ctl00$ContentPlaceHolder1$txtkisaaciklama="<b>Dekorasyon İşleri...").
Yanıtlar
-
A potentially dangerous Request.Form value was detected from the client (ctl00$ContentPlaceHolder1$txtmesaj="<href=>").
Asp.net üzerinde çalışırken sayfamıza yerleştirdiğimiz alanlardan veri almaya çalıştığımızda şayet gelen bilgi içersinde HTML etiketi içeren bir bilgi varsa sistem size A potentially dangerous Request.Form value was detected from the client hatası verecektir.
Bu hatanın oluşma sebebi; sayfanızda güvenlik zaafiyeti var ayarlarınızı kontrol edin demektir.
Peki ama bu hatanın çözümünü kodlarımızla kontrol altına almışsak ve de örneğin TinyMCE editör ile veri alıp kaydetmek istiyorsak ne yapmalıyız?
Bunun birkaç farklı çözümü mevcut;
1) Şayet bu tarz veri girişleri projemizin genelinde mevcut ise Web.Config dosyamızda <system.web> etiketinin altına
<pages validateRequest=”false” />
etiketi eklenir.
2) Bu tarz veri girişi projemizin sadece 1 tane dosyasında olacaksa o zaman sadece ilgili sayfamızın <%@ Page alanında
validateRequest=”false” etiketi eklenir.
Tüm bunları yaptınız fakat projeniz yine hata veriyor. O zaman muhtemelen Vs.2010 ve Asp.Net 4 ile kodlama yaptınız ve sistem bunu tanımıyor :)
Yapmanız gereken çok basit Web.Config dosyanızda
<configuration>
<system.web>
<httpRuntime requestValidationMode=”2.0¨ />
alanını eklemeniz gerekiyor.______________________________________
alıntıdır. zamanında banada lazım olmuştu not defterine kaydetmiştim, ama kaynak adresi unuttum
birde bunu dene
- Yanıt Olarak İşaretleyen Ali Rıza İnceoğlu 16 Ekim 2012 Salı 06:20
-
parametre eklerken server.htmlencode yazmamışsınız.
lokasyondan kaynaklanan birşey olacağını sanmıyorum. server'daki framework versiyonu kaç acaba ?
www.gorkemozdogan.com
- Yanıt Olarak Öneren Ali Rıza İnceoğlu 16 Ekim 2012 Salı 06:20
- Yanıt Olarak İşaretleyen Ali Rıza İnceoğlu 16 Ekim 2012 Salı 06:20
Tüm Yanıtlar
-
-
-
cmd.Parameters.AddWithValue("@Icerik", Server.HtmlEncode(lblicerik.Text));
şu şekilde kullandım ve aşağıda belirttiğim hatayı aldım
A potentially dangerous Request.Form value was detected from the client (ctl00$ContentPlaceHolder1$txtkisaaciklama="<b>1</b>").
ne yapmam gerek bir fikriniz var mı ?
-
-
-
öncelikle yardım ettiğin için çok teşekkrü ederşm ama ne yazıkki olmadı şu şekilde denemedim
ÖNCE button click eventine bunu yazdım
Server.HtmlEncode(txtkisaaciklama.Value);
Server.HtmlEncode(txticerik.Value);sonra aynı button clik eventine kodun devamı olarak
connection açtım
command sorgusu yaptım ve parametreye geldi sıra
cmd.Parameters.AddWithValue("@KisaAciklama", txtkisaaciklama.Value);
cmd.Parameters.AddWithValue("@Icerik", txticerik.Value);yazdım ama yine aynı hatayı aldım.Lütfen bunun başka bir yolu yokmu yada ben bir yerdemi hata yapıyorum yardım ederseniz sevinirim.
-
hatayı okuyalım öncelikle . ne diyor
A potentially dangerous Request.Form value was detected
request.formda potensiyel tehlike içeren değer var . <b> değerimiz </b> gibi bir şeyi post etmeye çalışınca < > karakterlerini tehlikeli algılıyor ki evet tehlikelidir. O yüzdende
HTMLEncode ile içerik girdiğimiz kontroldeki "<" leri "<" ye ">" leri ">" ye çevirir. Böylece hatadan kurtulursun. Fakat bunları bir kaydettiğinde geri okuyacağın zamanda decode ile çevirmek gerekir.
http://www.dotnetperls.com/encode-html-string
www.gorkemozdogan.com
-
-
kod koyabiliyor musun onun üstünden anlatıyım ?
editöre yazdığınız metinin içerisinden "<" ve ">" karakterileri var. o yüzden hata oluşuyor. Onun içinde Encode methodu ile hatayı geçeriz. Fakat veri yazıldığında bir yere < ; & gt ; gibi şeyler görünce bu niye böyle oldu demeyin diye izah etmeye çalışmıştım.
editörün bir textbox, textarea vs kontrolü vardır . Server.HtmlEncode(textbox.text) şeklinde yazmak gerekiyor . Tabi birde sayfada validateRequest olmamalı.
www.gorkemozdogan.com
-
-
aynısı az önce denedim size belirttim olmadığını yukarıda.
başka ne yapıcağım aklıma gelmiyor.
birde şunu belirtim sorun detayı olarak sitenin admin paneli ve dizinde admin die bir klaösr var.
normasl siteden örneğin iletişim sayfasından html taglı bir içerik mesela <br /> gelince ValidateRequest="false" koymam bunu gidermey yetiyor.benim sorunum zaten admin klasörüün içndeki sayfalarda onlara ValidateRequest="false" bu tagı koyunca çalışmıyor anlamadım gitti.var mı bununlar ilgili bir bilginiz başka ?
-
-
parametre eklerken server.htmlencode yazmamışsınız.
lokasyondan kaynaklanan birşey olacağını sanmıyorum. server'daki framework versiyonu kaç acaba ?
www.gorkemozdogan.com
- Yanıt Olarak Öneren Ali Rıza İnceoğlu 16 Ekim 2012 Salı 06:20
- Yanıt Olarak İşaretleyen Ali Rıza İnceoğlu 16 Ekim 2012 Salı 06:20
-
-
A potentially dangerous Request.Form value was detected from the client (ctl00$ContentPlaceHolder1$txtmesaj="<href=>").
Asp.net üzerinde çalışırken sayfamıza yerleştirdiğimiz alanlardan veri almaya çalıştığımızda şayet gelen bilgi içersinde HTML etiketi içeren bir bilgi varsa sistem size A potentially dangerous Request.Form value was detected from the client hatası verecektir.
Bu hatanın oluşma sebebi; sayfanızda güvenlik zaafiyeti var ayarlarınızı kontrol edin demektir.
Peki ama bu hatanın çözümünü kodlarımızla kontrol altına almışsak ve de örneğin TinyMCE editör ile veri alıp kaydetmek istiyorsak ne yapmalıyız?
Bunun birkaç farklı çözümü mevcut;
1) Şayet bu tarz veri girişleri projemizin genelinde mevcut ise Web.Config dosyamızda <system.web> etiketinin altına
<pages validateRequest=”false” />
etiketi eklenir.
2) Bu tarz veri girişi projemizin sadece 1 tane dosyasında olacaksa o zaman sadece ilgili sayfamızın <%@ Page alanında
validateRequest=”false” etiketi eklenir.
Tüm bunları yaptınız fakat projeniz yine hata veriyor. O zaman muhtemelen Vs.2010 ve Asp.Net 4 ile kodlama yaptınız ve sistem bunu tanımıyor :)
Yapmanız gereken çok basit Web.Config dosyanızda
<configuration>
<system.web>
<httpRuntime requestValidationMode=”2.0¨ />
alanını eklemeniz gerekiyor.______________________________________
alıntıdır. zamanında banada lazım olmuştu not defterine kaydetmiştim, ama kaynak adresi unuttum
birde bunu dene
- Yanıt Olarak İşaretleyen Ali Rıza İnceoğlu 16 Ekim 2012 Salı 06:20
-
-