asp.net यूआरएल रूटिंग, छवि हैंडलर और "एक संभावित खतरनाक अनुरोध। पैथ मूल्य"



vb.net web-config (1)

मैं अब कुछ समय से इस समस्या का सामना कर रहा हूं और कुछ विचारों के लिए यहां प्रश्न पोस्ट करके एक बार और सभी के लिए कोशिश करने का प्रयास करने का फैसला किया है। मेरे पास यहां स्थित .net 4 वेबसाइट में एक छवि हैंडलर है:

https://www.amadeupurl.co.uk/ImageHandler.ashx?i=3604 (गोपनीयता के लिए वास्तविक डोमेन हटा दिया गया)

अब यह ठीक काम करता है और बिना किसी समस्या के वेब सर्वर से एक छवि परोसता है, मैं बिना किसी समस्या के कहता हूं क्योंकि अगर मैं यूआरएल एक्सेस करता हूं तो यह ठीक काम करता है, छवि लोड होती है, कोई अपवाद उत्पन्न नहीं होता है। हालांकि किसी ने कल इस सटीक यूआरएल पर दौरा किया और निम्नलिखित पंक्तियों के साथ एक अपवाद उठाया गया:

Exception Generated
Error Message:
A potentially dangerous Request.Path value was detected from the client (?).
Stack Trace:
at System.Web.HttpRequest.ValidateInputIfRequiredByConfig() at System.Web.HttpApplication.PipelineStepManager.ValidateHelper(HttpContext context)

Technical Information:
DATE/TIME: 23/01/2013 03:50:01
PAGE: www.amadeupurl.co.uk/ImageHandler.ashx?i=3604

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

routes.Ignore("{resource}.ashx")

मुझे यकीन नहीं है कि मुझे और क्यों त्रुटि मिल जाएगी या कोशिश करने के लिए और क्या होगा।


Asp.Net 4.0+ बहुत सख्त अंतर्निहित अनुरोध सत्यापन के साथ आता है, इसका हिस्सा यूआरएल में संभावित खतरनाक पात्र हैं जिनका उपयोग एक्सएसएस हमलों में किया जा सकता है। यूआरएल में डिफ़ॉल्ट अमान्य वर्ण यहां दिए गए हैं:

< > * % & : \ ?

आप इस व्यवहार को अपनी कॉन्फ़िगरेशन फ़ाइल में बदल सकते हैं:

<system.web>
    <httpRuntime requestPathInvalidCharacters="<,>,*,%,&,:,\,?" />
</system.web>

या .NET 2.0 सत्यापन पर वापस जाएं:

<system.web>
    <httpRuntime requestValidationMode="2.0" />
</system.web>

एक बहुत ही आम अमान्य चरित्र % , इसलिए यदि किसी भी मौके (हमले, वेब क्रॉलर, या सिर्फ कुछ गैर-मानक ब्राउज़र) से यूआरएल बच निकल रहा है तो आपको यह मिलता है:

www.amadeupurl.co.uk/ImageHandler.ashx/%3Fi%3D3604

इसके अलावा:

www.amadeupurl.co.uk/ImageHandler.ashx/?i=3604

ध्यान दें कि %3F के लिए बचने का चरित्र है ? । चरित्र को Asp.Net अनुरोध सत्यापनकर्ता द्वारा अमान्य माना जाता है और अपवाद फेंकता है:

A potentially dangerous Request.Path value was detected from the client (?).

हालांकि त्रुटि संदेश में आप चरित्र (% 3F) का अनचाहे संस्करण देखते हैं ? फिर

अनुरोध सत्यापन और इसके साथ कैसे निपटने के लिए यहां एक अच्छा लेख दिया गया है





httphandler