2012-02-03 17 views
24

से संभावित रूप से खतरनाक अनुरोध। फॉर्म मान पता चला था। मुझे यह समस्या है। मैंने सब कुछ करने की कोशिश की है। ValidateRequest = "false" .. और डीकोडिंग और एन्कोडिंग एचटीएमएल .. आदि आदि ..क्लाइंट

मुझे एक पॉपअप बॉक्स (इसलिए मैं मॉडलपॉपअप एक्स्टेंडर का उपयोग कर रहा हूं) एक ऐसे उपयोगकर्ता को प्रस्तुत करने के लिए जहां लोग एक्सएमएल सेटिंग्स टाइप कर सकते हैं और क्लिक कर सकते हैं पॉपअप को बंद करने और सहेजने के लिए ठीक/रद्द करें बटन।

हालांकि मैं इस त्रुटि "एक संभावित खतरनाक Request.Form मूल्य ग्राहक से पता चला था" हो रही पर रखने ..

यहाँ नीचे अपने परीक्षण कोड (मेरी परिदृश्य और त्रुटि के त्वरित उदाहरण) है ..

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="WebApplication1.WebForm1" 
    ValidateRequest="false" %> 

<%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="cc1" %> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head runat="server"> 
    <title></title> 
</head> 
<body> 
    <form id="form1" runat="server"> 
    <asp:ScriptManager ID="ScriptManager1" runat="server"> 
    </asp:ScriptManager> 
    <div> 
     <asp:Panel ID="Popup" runat="server" Width="800px" Style="display: none;"> 
      <asp:LinkButton ID="Display" runat="server" Style="display: none;" OnClick="Display_Click" /> 
      <cc1:ModalPopupExtender ID="ModalPopupExtender" runat="server" TargetControlID="Display" 
       PopupControlID="Popup" DropShadow="false" Y="10" /> 
      <div id="Item"> 
       <div class="Item"> 
        <table width="100%"> 
         <tr>         
          <td> 
           <textarea id="txtAreaValue" cols="35" rows="6" style="resize: none;" runat="server" /> 
          </td> 
         </tr> 
         <tr>         
          <td> 
           <asp:Button ID="btnOk" Text="Ok" SkinID="default" Width="50px" runat="server" /> 
           <asp:Button ID="btnCancel" Text="Cancel" SkinID="default" Width="50px" OnClick="BtnCancel_Click" 
            runat="server" /> 
          </td> 
         </tr> 
        </table> 
       </div> 
      </div> 
     </asp:Panel> 
    </div> 
    </form> 
</body> 
</html> 

पीछे कोड:

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Web.UI; 
using System.Web.UI.WebControls; 

namespace WebApplication1 
{ 
    public partial class WebForm1 : System.Web.UI.Page 
    { 
     protected void Page_Load(object sender, EventArgs e) 
     { 
      ModalPopupExtender.Show(); 
      string str = "<?xml version=\"1.0\" encoding=\"utf-8\"?><XmlConfig xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\"> <XmlConfig Type=\"TEST\" DefiningXpath=\"/PERSON/NAME\"><Index Name=\"Name\" XPath=\"/PERSON/NAME/VALUE\" Type=\"String\" /><Index Name=\"Id\" XPath=\"/PERSON/NAME/ID\" Type=\"String\" /> </XmlConfig></XmlConfig>"; 

      txtAreaValue.InnerText = str; 
     } 

     protected void Display_Click(object sender, EventArgs e) 
     { 
      //Shows the Item detail Edit box 
      ModalPopupExtender.Show(); 
     } 

     protected void BtnCancel_Click(object sender, EventArgs e) 
     { 
      ModalPopupExtender.Hide(); 
     } 
    } 
} 

कोड को चलाने के लिए .. AjaxControltoolkit.dll को रेफरी जोड़ें और फिर चलाने के लिए और आप पाठ क्षेत्र एक्सएमएल के साथ डाला जा रहा देखेंगे। रद्द करें बटन पर क्लिक करें और इससे त्रुटि उत्पन्न होती है। कृपया करके क्या कोई मेरी मदद कर सकता हैं?

+2

इस http बाहर की जाँच करें, सर्वर को भेजने से पहले मूल्यों एन्कोड करने के लिए जावास्क्रिप्ट का उपयोग कर सकते: // stackoverflow।कॉम/प्रश्न/2673850/validaterequest-false-doesnt-work-in-asp-net-4 – mikey

+0

संभावित संभावित डुप्लिकेट [संभावित रूप से खतरनाक अनुरोध। क्लाइंट से फॉर्म मान पता चला था] (http://stackoverflow.com/questions/ 819 9 1/एक संभावित रूप से खतरनाक-अनुरोध-रूप-मूल्य-पता-से-क्लाइंट से पता चला) –

+0

धन्यवाद माइकी :-) यह काम करता है .. धन्यवाद यह विश्वास नहीं कर सकता कि यह इतना आसान था .. – user929153

उत्तर

47

उपयोग

<httpRuntime requestValidationMode="2.0" /> 
अपने web.config में

(कोई गुण रखते हुए आप पहले से ही, उस तत्व पर है अगर यह पहले से ही वहाँ है)। एएसपी.NET4.0 अन्यथा ValidateRequest अनदेखा करता है।

और, ज़ाहिर है, सुनिश्चित करें कि आप वास्तव में खतरनाक अनुरोधों के खिलाफ सुरक्षा के लिए आवश्यक उपाय करते हैं, अब यह आपके लिए नहीं किया जा रहा है।

संपादित करें: ऐसा करने का एक शानदार तरीका है RequestValidator से प्राप्त अपनी खुद की कक्षा बनाना, और 4.0 व्यवहार का उपयोग करना, लेकिन उस वर्ग के साथ जो जांच करता है।

+0

हाय जॉन वेब.कॉन्फिग फ़ाइल को बदले बिना इसे हासिल करने का कोई तरीका है। गलत स्थान पर प्रश्न पूछने के लिए खेद है :) – MaxRecursion

+3

@ अक्षयकुल्कर्णी डिफ़ॉल्ट web.config को बदलने के लिए मुख्य .NET कॉन्फ़िगरेशन को बदलता है? मुझे लगता है कि काम करेगा, लेकिन अगर आप web.config को बदलना नहीं चाहते हैं, तो आप वास्तव में इसे बदलना नहीं चाहते हैं। असल में, यह उस स्तर पर लागू नहीं होने वाली किसी चीज़ को अवरुद्ध करने के लिए उच्च स्तरीय कॉन्फ़िगरेशन रखने के लिए बहुत अधिक समझ में नहीं आता है। आप वेब.कॉन्फिग क्यों नहीं बदलते? –

+0

+1 बस जो मैं खोज रहा था! :) –

5

ठीक है, लोग केवल Asp.net 4.0 के बारे में बात कर रहे हैं ... मुझे लगता है कि हमें अन्य संस्करणों को भी संबोधित करने की आवश्यकता है। आज, मुझे एक ही समस्या थी जब मैंने अपने अजाक्सटूलकिट संपादक को TinyMCE के साथ बदल दिया और पोस्टबैक के साथ मुझे एक ही समस्या मिली।

"एक संभावित खतरनाक Request.Form मूल्य ग्राहक से पता चला था" ..

तो मैं अपने webconfig अंदर इस लाइन का इस्तेमाल किया और यह मेरे लिए काम किया।

<system.web> 
    <pages validateRequest="false" /> 
</system.web> 

यह एएसपीनेट 2.0 से 3.5 तक काम करना चाहिए।

अद्यतन: भी .net तक काम करता है 4.5

अद्यतन: आप पृष्ठ के स्तर का नहीं बल्कि पूरे वेबसाइट पर अनुरोध मान्य करने के लिए कोशिश कर सकते हैं। बस पाठकों को सबसे अच्छा तरीका चुनने देना चाहता था। इसे इंगित करने के लिए धन्यवाद डीवीडी।

+3

अनुरोध का उपयोग कर सत्यापन प्रमाणीकरण मोड = "2.0" और सत्यापन पृष्ठ को बंद करना (वैधता की आवश्यकता = "झूठी") केवल आवश्यक पृष्ठ पर सुरक्षा के लिए बेहतर होगा, पूरी साइट के लिए सत्यापन बंद करने के बजाय। – dvdmn

+0

@dvdnhm, दोस्त, सवाल यह था कि त्रुटि को कैसे ठीक किया जाए ... कोई फर्क नहीं पड़ता कि यह एक पृष्ठ या पूरे वेब के लिए है। यह एक तरह से या दूसरे किया जा सकता है। – KMX

+0

@BradleyDotNET (slow_clap) – KMX

29

यहां संभावित समाधान है जो आपकी मदद कर सकता है। इसके लिए सर्वर साइड कॉन्फ़िगरेशन सेटिंग बनाएं। यदि आप इस पृष्ठ विशेषता को सेट करने के बजाय अपने प्रोजेक्ट में चयनित पृष्ठों से इनपुट के रूप में HTML तत्व को अनुमति देना चाहते हैं।

<%@ Page ValidateRequest="false" %> 

प्रत्येक पृष्ठ पर यह ValidateRequest = "false"। यदि आप Web.Config फ़ाइल में परिवर्तन करने से पहले प्रोजेक्ट के सभी पृष्ठों में चाहते हैं। इस टैग को अनुभाग में जोड़ें।

आप नेट 4.0 का उपयोग कर रहे हैं, तो आप से Web.Config फ़ाइल में एक और परिवर्तन करने के लिए किया है। इस टैग को अनुभाग में जोड़ें।

<httpRuntime requestValidationMode="2.0" /> 

यहाँ नेट 4,0

<configuration> 
    <system.web> 
    <httpRuntime requestValidationMode="2.0" /> 
    </system.web> 
    <pages validateRequest="false"> 
    </pages> 
</configuration> 

में सभी पृष्ठों के अनुरोध को मान्य नहीं है के लिए विन्यास कर रहे हैं यहाँ इस पर पूर्ण उदाहरण है। Click Here...

+0

कौन सा Web.config? वेब ऐप के लिए या दृश्य के लिए एक? – NicVerAZ

0

इस त्रुटि को हटाने के लिए 3 विकल्प हैं।

  1. पृष्ठ निर्देशों में validateRequest="false" सेट करें।
  2. वेब.config फ़ाइल में validateRequest="false" सेट करें।
  3. यदि आप अधिक जानकारी के लिए डॉटनैट 4,0

उपयोग कर रहे हैं चेकआउट this link web.config में requestValidationMode="2.0" सेट करें।

0

"एक संभावित खतरनाक Request.Form मूल्य ग्राहक से पता चला था" ..

1) web.config फ़ाइल

2) web.config फ़ाइल में पक्ष पृष्ठों टैग में सेट validateRequest="false" में httpRuntime requestValidationMode="2.0" requestPathInvalidCharacters="&lt;,&gt;,\" सेट

<system.web> 
    <httpRuntime requestValidationMode="2.0" requestPathInvalidCharacters="&lt;,&gt;,\"/> 
<pages controlRenderingCompatibilityVersion="3.5" clientIDMode="AutoID" validateRequest="false"/> 
<system.web> 
0

मैं aspx पृष्ठ से कुछ ईमेल टेम्पलेट्स भेजने जबकि पीछे कोड करने के लिए इस एक ही समस्या का सामना करना पड़ा ....

तो मैं enter code here के तहत `अपने वेब config में

<httpRuntime requestValidationMode="2.0" /> 

जोड़कर इस हल करने के लिए कोशिश की, लेकिन है कि मुझे मदद की नहीं किया जब तक कि मैं aspx पेज के पेज निर्देश में

ValidateRequest="false" 

attrribute putted।

1

मैंने कॉलम आलेख आईडी और article_content के साथ एक तालिका आलेख बनाया है। मैंने Article_content कॉलम के लिए HTML संपादक का भी उपयोग किया। जब मैंने सहेजने की कोशिश की तो मुझे एक ही त्रुटि मिली। इसे वर्ग में Article_content संपत्ति में [AllowHtml] जोड़कर हल किया गया था।

[AllowHtml] 
[Required] 
public string article_content { get; set; } 

System.Web.Mvc का उपयोग कर नामस्थान शामिल करना न भूलें। अधिक जानकारी के लिए: http://www.infinetsoft.com/Post/A-potentially-dangerous-Request-Form-value-was-detected-from-the-client/1246

0

आपको लगता है कि अगर सूट अपनी आवश्यकताओं

देख this answer