"संभावित रूप से खतरनाक Request.Path मान प्राप्त करना क्लाइंट (और) से पाया गया था"


114

मुझे एक विरासत कोड समस्या मिली है जिसके लिए मुझे यादृच्छिक यूआरएल का समर्थन करने की आवश्यकता है जैसे कि वे होम पेज के लिए अनुरोध थे। उनमें से कुछ URL में ऐसे अक्षर हैं जो त्रुटि उत्पन्न करते हैं "संभावित संभावित Request.Path मान क्लाइंट (&) से पाया गया था" । साइट ASP.Net MVC 3 (C # में) के साथ लिखी गई है और IIS 7.5 पर चल रही है।

यहाँ एक उदाहरण URL है ...

http://mywebsite.com/Test123/This_&_That

यहां बताया गया है कि मेरे पास मेरा कैच-ऑल रूट सेटअप है (विशिष्ट पृष्ठों को पकड़ने के लिए मेरे पास अन्य मार्ग हैं) ...

routes.MapRoute(
    "Default", // Route name
    "{garb1}/{garb2}", // URL with parameters
    new { controller = "Website", action = "Home", garb1 = UrlParameter.Optional, garb2 = UrlParameter.Optional } // Parameter defaults
);

मैंने अपनी web.config फ़ाइल में निम्न चीज़ें जोड़ी हैं ...

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

मैंने भी ValidateInput विशेषता को उस एक्शन में जोड़ा है जो url को पकड़ना चाहिए ...

public class WebsiteController : Controller
{
    [ValidateInput(false)]
    public ActionResult Home()
    {
        return View();
    }
}

लेकिन मुझे अभी भी त्रुटि मिल रही है। कोई विचार क्यों? क्या मैं कुछ भुल गया? अभी मैं अपने स्थानीय देव सर्वर पर चल रहा हूं (मैंने अभी तक उत्पादन में इन सुधारों की कोशिश नहीं की है)।


1
कंप्यूटर पर कुछ समय बाद मैं आपके द्वारा चेक किए जाने वाले कुछ वर्णों को अनुमति देने के लिए एक सेटिंग है ...... लेकिन क्या आप अपने URL को urlencode कर सकते हैं?
एडम टलीपर - एमएसएफटी


मैं नहीं जानता कि किस कारण से वेबसाइट आंतरिक रूप से पुनर्निर्देशन की कोशिश कर रही थी जो ' लोकलहोस्ट /: // लोकलहोस्ट / माय वेवसाइटनेम ' जैसा एक यूआरएल बना रहा था जो मुझे वही त्रुटि दे रहा था। मुझे नहीं पता कि ASP.net पाइपलाइन इसे एक खतरनाक अनुरोध URL क्यों मानती है।
आरबीटी

मेरे मामले में, मुझे URL में एक स्लैश याद आ रही थी। URL में टाइपो के लिए जाँच करने के लिए पहली बात यह होगी।
किशन वैष्णव

जवाबों:


162

जब आप इन सेटिंग्स को कॉन्फ़िगर फ़ाइल में आज़मा सकते हैं

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

मैं URL पथ में '&' जैसे वर्णों को अंडरस्कोर के साथ बदलने से बचना चाहूंगा।


13
यह requestPathInvalidCharacters = "" चाल को प्रदर्शित करता है। धन्यवाद। मैं निश्चित रूप से सहमत हूं कि आपको पथ में उपयोग नहीं करना चाहिए, दुर्भाग्य से हम इसे वर्षों से अनुमति दे रहे हैं इसलिए हमें इसका समर्थन जारी रखने की आवश्यकता है।
ब्रायन

5
एक सुरक्षा मुद्दा नहीं है?
मारियस स्टेंसनू

3
@ मार्सैस्टेनस्कु - यह स्वाभाविक रूप से एक सुरक्षा मुद्दा नहीं है; यह इस पर निर्भर करता है कि आप इसके साथ क्या करते हैं। यदि इनपुट लिया गया और बच गया और आउटपुट के साथ शामिल किया गया तो यह ठीक रहेगा। यदि यह बच नहीं गया है, तो आप अपने आप को एक हमले के लिए खोल सकते हैं।
जस्टिन हेगर्सन

2
यह समाधान आपको यह त्रुटि दे सकता है: HTTP त्रुटि 500.19 - आंतरिक सर्वर त्रुटि अनुरोधित पृष्ठ तक पहुँचा नहीं जा सकता क्योंकि पृष्ठ के लिए संबंधित कॉन्फ़िगरेशन डेटा अमान्य है।
टॉम स्टिकेल

2
मुझे इस उत्तर का उपयोग करते समय एक त्रुटि 500 ​​भी मिली। यह पहले से ही होने के कारण था <httpRuntime> और <पृष्ठ> टैग, इसलिए दोहराव संघर्ष था। यह हल करने के बाद, यह जवाब मेरे लिए भी ठीक काम कर रहा है।
कल्लुम टैंटन

5

मैंने इस प्रकार की त्रुटि का सामना किया है। उस्तरा से एक समारोह कॉल करने के लिए।

public ActionResult EditorAjax(int id, int? jobId, string type = ""){}

लाइन को बदलकर हल करें

से

<a href="/ScreeningQuestion/EditorAjax/5&jobId=2&type=additional" /> 

सेवा

<a href="/ScreeningQuestion/EditorAjax/?id=5&jobId=2&type=additional" />

जहां मेरा मार्ग है ।config है

routes.MapRoute(
            "Default", // Route name
            "{controller}/{action}/{id}", // URL with parameters
            new { controller = "Home", action = "Index", id = UrlParameter.Optional }, new string[] { "RPMS.Controllers" } // Parameter defaults
        );

1

यदि आप एचटीएमएल टैग को केवल कुछ टेक्स्टबॉक्स के लिए mvc में अनुमति देना चाहते हैं

आप एक काम कर सकते हैं

नियंत्रक में

 [ValidateInput(false)]
public ActionResult CreateNewHtml()  //view
{
    return View();
}
[ValidateInput(false)]
[HttpPost]
public ActionResult CreateNewHtml(cbs obj)//view cbs is database class
{
    repo.AddHtml(obj);
    return View();
}

1
ओपी स्पष्ट रूप से उन URL की बात करता है जिनका उसे समर्थन करने की आवश्यकता है (पाठ बॉक्स सामग्री नहीं) और इसमें HTML का भी कोई उल्लेख नहीं है - इसलिए आपका उत्तर वास्तव में दिए गए प्रश्न पर लागू नहीं होता है।
ओलिवर

2
यह प्रश्न पर लागू नहीं होता है, लेकिन मैंने इसे बदल दिया क्योंकि यह कुछ ऐसा है जिसे मैं नहीं जानता था कि यह एक विकल्प था। धन्यवाद @ पावन
मिकुआइस

0

फ़िडलर में हमें यही त्रुटि मिल रही थी जब यह जानने की कोशिश की जा रही थी कि हमारा सिल्वरलाइट आर्कगिस मैप दर्शक मानचित्र को लोड क्यों नहीं कर रहा है। हमारे मामले में यह कोड में URL में एक टाइपो था। किसी कारण से वहाँ एक समान संकेत था।
http: // = someurltosome / भयानक / जगह
के बजाय
http: // someurltosome / भयानक / जगह

उस समान चिह्न को बाहर निकालने के बाद इसने महान (निश्चित रूप से) काम किया।


0

नीचे की पंक्तियों की जाँच करें आपके web.config फ़ाइल में मौजूद हैं

<system.web> <httpRuntime requestPathInvalidCharacters="" /> </system.web>

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.