2011-01-18 24 views
9

वर्तमान में हमारे पास एक पृष्ठ है जिसका उपयोग हमारी वेबसाइट पर त्रुटियों के दौरान एक सामान्य त्रुटि संदेश प्रदर्शित करने के लिए किया जाता है। इसमें एक लेबल प्रदर्शित करने के अलावा अन्य कोई कार्यक्षमता नहीं है जो उल्लेख करती है कि कोई त्रुटि हुई थी।कस्टम त्रुटि में AspxErrorPath पृष्ठ

यहां मेरा मुद्दा है, हमारे ग्राहक ने सुरक्षा समीक्षा चलाई है और हमें बताता है कि हमारे त्रुटि पृष्ठ में क्वेरी स्ट्रिंग में यूआरएल के कारण फ़िशिंग है, अब मैं इसे एक समस्या नहीं मानता, लेकिन इसे समाप्त करने के लिए प्रश्न, मैं क्वेरी स्ट्रिंग को हटाना चाहता हूं। ?

<customErrors mode="On" defaultRedirect="~/DefaultErrorPage.aspx"> 
</customErrors> 

जब एक त्रुटि होती है, यह DefaultErrorPage.aspx aspxerrorpath =/Website1/LastPage.aspx

को जाता है मैं इस रोका जा सकता है कैसे:

मेरे web.config प्रविष्टि यह है ? हालांकि, अगर मैं क्वेरी में शामिल हूं, तो मैं पृष्ठ पर रीडायरेक्ट कर सकता हूं, लेकिन मैं अतिरिक्त पुनर्निर्देशन के बजाय क्वेरी स्ट्रिंग को रोकने के लिए एक और तरीका ढूंढ रहा हूं।

उत्तर

7

तुम्हें पकड़ सकता है/बजाय अपने Global.asax फ़ाइल में सभी त्रुटियों को संभाल और इसलिए रीडायरेक्ट कर

protected void Application_Error(object sender, EventArgs e) 
    { 
     //Exception ex = Server.GetLastError(); 

     Server.Transfer("~/DefaultErrorPage.aspx"); 
    } 
+0

यह काम करेगा ... जब तक माइक्रोसॉफ्ट एक =) – jaekie

+0

दुर्भाग्य से यह काम नहीं करता है अगर त्रुटि Application_Start में है। "इस संदर्भ में अनुरोध उपलब्ध नहीं है" –

+0

@ noah1989 "काम नहीं करता" क्या आपका मतलब है कि यह अभी भी सुरक्षा लेखा परीक्षकों को लगता है कि कुछ प्रकार की क्रॉस साइट स्क्रिप्टिंग भेद्यता है? या क्या आपको उस मामले में त्रुटियों का निदान करने के लिए बस एक अलग तंत्र का उपयोग करने की आवश्यकता है? –

2

आपको त्रुटि हैंडलिंग प्रक्रिया को स्वयं का नियंत्रण लेने के लिए है करने के लिए जा रहे हैं। एक विधि कस्टम त्रुटि पुनर्निर्देशन से छुटकारा पाती है और वैश्विक में Application_Error विधि का उपयोग करती है। फिर आप किसी भी क्वेरी स्ट्रिंग तर्क के बिना आवश्यक व्यक्ति को निर्देशित कर सकते हैं।

एक और विकल्प ELMAH है, जिसे एएसपी.NET में मृत्यु त्रुटियों की पीली स्क्रीन से बचने के लिए डिज़ाइन किया गया है। फिर आप एक दोस्ताना त्रुटि तैयार कर सकते हैं और त्रुटि प्रबंधन कोड लिखने के बारे में चिंता नहीं कर सकते हैं।

एक तीसरी विधि सुरक्षा टीम को शिक्षित करना है कि एएसपी.NET कैसे काम करता है और देखें कि "सुरक्षा चिंता" वैध है (यह हो सकता है) या नहीं। इसका मतलब यह नहीं है कि वे आपको उपरोक्त विकल्पों में से किसी एक को निश्चित रूप से नहीं करेंगे।

+0

मुझे ईएलएमएएच का उपयोग करना अच्छा लगेगा, मैं इसे अपने घर परियोजनाओं पर उपयोग करता हूं, लेकिन मेरे ग्राहक हमारी तीसरी पार्टी का 99% और ओपन सोर्स के 100% तृतीय पक्षों को प्रतिबंधित करते हैं – jaekie

3

एक त्वरित सुधार के रूप में, मैंने पाया है कि "?" डिफ़ॉल्ट रेडियोधर्मी सेटिंग के अंत में aspxerrorpath को हटाने में मेरे लिए काम किया। वैकल्पिक रूप से एक ही system.webServer सेटिंग्स पर

<customErrors mode="On" defaultRedirect="~/SystemError.aspx"> 
    <error statusCode="403" redirect="~/Home.aspx?"/> 
    <error statusCode="404" redirect="~/Home.aspx?"/> 
</customErrors> 

, है::

इसके अलावा, मैं एक ही मुद्दा system.web में customErrors सेटिंग्स के साथ हो रही थी, और एक ही समाधान काम किया

<httpErrors errorMode="Custom"> 
    <remove statusCode="403" subStatusCode="-1" /> 
    <error statusCode="403" path="/Home.aspx?" responseMode="Redirect" /> 
    <remove statusCode="404" subStatusCode="-1" /> 
    <error statusCode="404" path="/Home.aspx?" responseMode="Redirect" /> 
</httpErrors> 
संबंधित मुद्दे