none
Asp.net " A potentially dangerous Request. " Hatası RRS feed

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

    15 Ekim 2012 Pazartesi 11:45

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

    15 Ekim 2012 Pazartesi 15:22
  • 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

    15 Ekim 2012 Pazartesi 14:58

Tüm Yanıtlar

  • server.htmlencode ile deneyin 

    www.gorkemozdogan.com

    15 Ekim 2012 Pazartesi 12:58
  • nasıl yani açıklayabilir misiniz ? ne yapmam gerek ?
    15 Ekim 2012 Pazartesi 13:11
  • 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ı ?

    15 Ekim 2012 Pazartesi 13:27
  • Server.HtmlEncode(txtkisaaciklama.Text)

    bunun gibi olmalı bu hatayı almanızın nedeni girdinin içinde < > gibi karakterlerin olması diye düşünüyorum o yüzden girdi yapılan kontrolde encode işlemi yaparsanız sorun kalmayacaktır.


    www.gorkemozdogan.com

    15 Ekim 2012 Pazartesi 14:12
  • şimdi bn bu şekilde textboxlarımı page_loada tanıtsam ondan sonra 

    md.Parameters.AddWithValue("@Icerik", lblicerik.Text);

    die kullansam bu hata ortadan kalkar mı ?

    15 Ekim 2012 Pazartesi 14:17
  • ö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.

    15 Ekim 2012 Pazartesi 14:29
  • 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 "&lt" ye ">" leri "&gt" 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

    15 Ekim 2012 Pazartesi 14:30
  • ben zaten kayıt yapamıyorum problem orada kayıt yapsa bi okutucam ama kayıt yapmıyor.html editöre ne zaman girsem metin bu hatayı alıyorum.
    15 Ekim 2012 Pazartesi 14:36
  • 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 &lt ; & 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

    15 Ekim 2012 Pazartesi 14:43
  • cmd.Parameters.AddWithValue("@KisaAciklama", Server.HtmlEncode(txtkisaaciklama.Value));
    cmd.Parameters.AddWithValue("@Icerik", Server.HtmlEncode(txticerik.Value));

    böyle denermisin ? 


    www.gorkemozdogan.com

    15 Ekim 2012 Pazartesi 14:44
  • 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 ?

    15 Ekim 2012 Pazartesi 14:49
  • ValidateRequest olmamlı demişsin ValidateRequest="false" damı olmıyacak ben bunu koyarak denedim bundan kaynaklanı olabilir mi ?
    15 Ekim 2012 Pazartesi 14:53
  • 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

    15 Ekim 2012 Pazartesi 14:58
  • visual studio 2008 kullanıyorum locationda uygun 
    15 Ekim 2012 Pazartesi 15:01
  • 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

    15 Ekim 2012 Pazartesi 15:22
  • yardımların için yok teşekkür ederim sayende fikirin ile çözdüm problemi son sölediğin locationdan mış problem ben 2.0. kullanıyourm ama sununcu 4.0 mış. tekrar teşekkür ederim iyi akşamlar.
    15 Ekim 2012 Pazartesi 15:27
  • server'daki framework kaç diye sormamış mıydım ben diye baktım sormuşum. Bi gelip makinenin başına oturmadığım kalmıştı ama benden destek almamakta direttin:D neyse kolay gelsin .

    www.gorkemozdogan.com

    15 Ekim 2012 Pazartesi 17:49