2009-12-11 29 views
13

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

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

में से पता चला था एएसपी.नेट?

मैं सत्यापन को रखना चाहता हूं, क्योंकि मेरे रूपों में HTML वर्णों की अनुमति देने के लिए कोई वैध कारण नहीं है। हालांकि, मुझे पूरा यकीन नहीं है कि इस त्रुटि को अधिक दोस्ताना तरीके से कैसे संभाला जाए। मैंने इसे Page_Error में संभालने का प्रयास किया लेकिन अब तक जैसा कि मैं बता सकता हूं, यह निम्न स्तर के खंड में होता है इसलिए Page_Error फ़ंक्शन कभी भी आग नहीं लगाता है।

इसलिए, मुझे Global.asax फ़ाइल में Application_Error का उपयोग करने का सहारा लेना पड़ सकता है। अगर यह उस त्रुटि को संभालने का एकमात्र तरीका है, तो क्या उस त्रुटि को विशेष रूप से संभालने का कोई तरीका है? मैं सभी एप्लिकेशन त्रुटियों को उसी तरह से संभाल नहीं लेना चाहता हूं।

धन्यवाद

+0

कर सकते हैं आप अपनी पेज टैग सामग्री पोस्ट करते हैं? – IrishChieftain

+0

<% @ पृष्ठ शीर्षक = "" भाषा = "सी #" मास्टरपेजफाइल = "~/मुख्य। मस्टर" ऑटोवेन्टवायरअप = "सत्य" कोडबहाइंड = "सीयूसर.एएसपीएक्स सीएस" इनहेरिट्स = "टेस्टसाइट.स्ट.मास्टरपेज.क्यूसर"%> – keyboardP

उत्तर

21

आपके पास दो विकल्प :

// Editing your global.asax.cs 
public class Global : System.Web.HttpApplication 
{ 
    protected void Application_Error(object sender, EventArgs e) 
    { 
     Exception lastError = Server.GetLastError(); 
     if (lastError is HttpRequestValidationException) 
     { 
      Response.Redirect("~/RequestValidationError.aspx"); 
     } 
    } 
} 

या

// Editing your CUser.aspx.cs 
public partial class CUser : System.Web.UI.Page 
{ 
    protected override void OnError(EventArgs e) 
    { 
     Response.Redirect("~/RequestValidationError.aspx"); 
     Context.ClearError(); 
    } 
} 
+0

धन्यवाद, ऐसा लगता है कि मुझे क्या चाहिए। – keyboardP

+0

[DeterminePostBackmode] (http://msdn.microsoft.com/en-us/library/system.web.ui.page.determinepostbackmode%28v=vs.110%29.aspx) जैसा कि उल्लेख किया गया है [http] [http: //www.codeproject.com/Tips/277509/try-catch-block-around-A- संभावित रूप से- खतरनाक- रेक) वैकल्पिक समाधान हो सकता है? [मैंने इसके साथ नहीं खेला है इसलिए मैं यह नहीं बता सकता कि यह उचित है या नहीं।] – LosManos

1

आप Application_Error में Server.GetLastError() उपयोग करते हैं, अपवाद है कि फेंक दिया गया था प्राप्त अपवाद का निरीक्षण किया, और प्रतिक्रिया करने के लिए कर सकते हैं के रूप में आप यह चाहते (, आदि एक पृष्ठ पर रीडायरेक्ट)

3

आप ग्लोबल.एक्सएक्स को अनावश्यक सामान जोड़ने नहीं जाना चाहते हैं। आप संतुष्ट हो कि इस नकली डेटा इनपुट के कारण होता है, तो इनपुट के साथ सौदा है, चाहे यह से आ रहा है:

http://codersbarn.com/post/2008/11/01/ASPNET-Data-Input-Validation.aspx

ध्यान लगाओ त्रुटि के कारण पर :-)

+0

उत्तर के लिए धन्यवाद। मैं किसी भी इनपुट चेक को संभालने के लिए रेगेक्स का उपयोग कर रहा हूं, लेकिन असफल होने के नाते, मैं यह सत्यापन चाहता हूं। ऐसे कई अपवाद भी हो सकते हैं जिन्हें मैं संभालना चाहता हूं, यह देखने के लिए उनमें से एक था कि उन्हें संभालने का सबसे अच्छा तरीका क्या होगा। – keyboardP

+0

ठीक है, लेकिन regex के साथ आप दुर्भावनापूर्ण इनपुट के प्रारूप को पूर्व निर्धारित नहीं कर सकते हैं। यदि आवश्यक हो तो आपको सभी इनपुट एंड एन्कोड को अवरुद्ध करने की आवश्यकता है :-) – IrishChieftain

+2

आह, ज़ाहिर है: डी! किसी भी विशेष पात्र को हटाने के लिए सभी इनपुट को स्वच्छ किया जाएगा। रेगेक्स इस साइट से कुछ अभिव्यक्तियों का उपयोग करके बनाई गई उपयोगिता वर्ग के हिस्से से है: http://www.securityfocus.com/infocus/1768 – keyboardP

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

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