2012-04-25 7 views
5

मेरे पास मेरे दृश्य पर एक आई-फ्रेम है जो बाहरी साइट से लिंक है। यह साइट कुछ मानों और कुछ कॉन्फ़िगरेशन सेटिंग्स में लेती है। इन कॉन्फ़िगरेशन सेटिंग्स के हिस्से के रूप में एक "CallBackURL" है। इस बाहरी वेबसाइट को इस CallBackUrl पर पोस्ट करें।एमवीसी 4 - रेजर - "क्लाइंट से संभावित रूप से खतरनाक अनुरोध .form मूल्य का पता चला"

मैंने अपने नियंत्रण पर एक क्रिया होने के लिए CallBackURL निर्दिष्ट किया।

कोड दृश्य

<form id="testForm" method="post" target="testFrame"> 
    <input type="hidden" name="RequestXML" ID="RequestXML" value="<Request><RedirectURL>Account/TokenRequest</RedirectURL></Request>" 
</form> 

<iframe id="testFrame" name="testFrame" frameborder="0" style="width:1000px;height:500px"></iframe> 

नियंत्रक कोड

[HttpPost] 
    [ValidateInput(false)] 
    public ActionResult TokenRequest() 
    { 
    if (Request.Form["ResponseXML"] != null) 
     ViewBag.ResponseXML = Request.Form["ResponseXML"]; 

    return PartialView(); 
    } 
मेरी नियंत्रक कार्रवाई अंदर

मैं निम्नलिखित त्रुटि मिलती है:

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

<httpRuntime requestValidationMode="2.0" /> 
<pages validateRequest="false"... 
में भी सेट किया है

मैं क्या गलत कर रहा हूँ?

EDIT मैं गलत web.config फ़ाइल संपादित कर रहा था। मैं इसे दृश्य फ़ोल्डर के अंदर web.config में जोड़ रहा था। एक बार जब मैंने इसे सही जगह पर बदल दिया तो यह काम करना शुरू कर दिया।

+0

webconfig यह शायद antixsser कोण कोष्ठक को पकड़ने है कर देगा। Server.HTMLEncode Request.Form कथन का प्रयास करें। –

+0

मैंने कोशिश की, यह काम नहीं करता है। मुझे अभी भी यह त्रुटि मिलती है: क्लाइंट से एक संभावित खतरनाक अनुरोध। फॉर्म वैल्यू का पता लगाया गया था (ResponseXML = "

उत्तर

2

केवल एचटीएमएल नियंत्रण का उपयोग करने के बजाय मॉडल का उपयोग करने का प्रयास करें। और AllowHtml विशेषता का भी उपयोग करें।

मॉडल:

public TokenRequestModel 
{ 
    [AllowHtml] 
    public string ResponseXML {get;set;} 
} 

कार्रवाई:

[HttpPost] 
public ActionResult TokenRequest(TokenRequestModel model) 
{ 
    if (!string.IsNullOrEmpty(model.ResponseXML)) 
     ViewBag.ResponseXML = model.ResponseXML; 

    return PartialView(); 
} 
+1

यह एमवीसी 4 – Schneider

+0

पर सुरुचिपूर्ण समाधान, एमवीसी 4 में काम करने के लिए प्रतीत नहीं होता है। [AllowHtml] को C# प्रॉपर्टी में जोड़ा गया जो दृश्य में @ Html.TextAreaFor() से मेल खाता है। इस क्षेत्र में टाइप किए गए सभी HTML कोण ब्रैकेट अब लोड और सही तरीके से सहेजते हैं। – SushiGuy

19

ऊपर समाधान MVC4 में मेरे लिए काम नहीं कर रहा था। मेरे लिए क्या काम करता है केवल कार्रवाई के ऊपर एक विशेषता डालना है। अपने web.config को बदलने या AllowHtml विशेषता जोड़ने की आवश्यकता नहीं है।

[HttpPost] 
[ValidateInput(false)] 
public ActionResult TokenRequest(TokenRequestModel model) 
{ 
    if (!string.IsNullOrEmpty(model.ResponseXML)) 
    ViewBag.ResponseXML = model.ResponseXML; 
    // ... 
+0

यह मेरे लिए काम करता है, लेकिन मैं डेटाबेस में डेटा पास करने के लिए पैरामीटरयुक्त एसक्यूएल स्पॉक्स का उपयोग कर रहा हूं, इसलिए मैं एसक्यूएल इंजेक्शन इत्यादि के बारे में चिंतित नहीं हूं। हालांकि, मुझे लगता है कि आप केवल उपयोगकर्ताओं को चेतावनी देना चाहते हैं कि उन्हें अपना सत्यापन कार्यान्वयन प्रदान करने की आवश्यकता है ... फिर से मेरे इंट्रानेट एप्लिकेशन और सीमित उपयोगकर्ता समूह के साथ कोई चिंता नहीं है। –

0

आप

[HttpPost] 
    public ActionResult TokenRequest() 
    { 
    if (Request.Unvalidated().Form["ResponseXML"] != null) 
     ViewBag.ResponseXML = Request.Unvalidated().Form["ResponseXML"]; 

    return PartialView(); 
    } 

कोशिश कर सकते हैं मुझे लगता है कि अमान्य() त्रुटि दूर की आवश्यकता के बिना जाना संपादित करने के लिए

संबंधित मुद्दे

 संबंधित मुद्दे