"একটি সম্ভাব্য বিপজ্জনক অনুরোধ Get


114

আমি একটি লিগ্যাসি কোড ইস্যু পেয়েছি যার জন্য আমি এলোমেলো ইউআরএলগুলি সমর্থন করি যেন তারা হোম পৃষ্ঠার জন্য অনুরোধ হয়। কিছু ইউআরএলগুলিতে এমন অক্ষর রয়েছে যা "একটি সম্ভাব্য বিপজ্জনক অনুরোধ । সাইটটি এএসপি. নেট এমভিসি 3 (সি # তে) দিয়ে লেখা এবং আইআইএস 7.5-এ চলছে।

এখানে একটি উদাহরণ ইউআরএল ...

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
);

আমি আমার ওয়েবকনফিগ ফাইলে নিম্নলিখিত জিনিসগুলি যুক্ত করেছি ...

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

ইউআরএলগুলি ধরা উচিত এমন ক্রিয়াতে আমি বৈধতা ইনপুট বৈশিষ্ট্যও যুক্ত করেছি ...

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

তবে আমি এখনও ত্রুটি পাচ্ছি। কোন ধারণা কেন? আমি কি কিছু রেখে গেলাম? এই মুহূর্তে আমি কেবল আমার স্থানীয় ডেভ সার্ভারে চলছি (আমি এখনও এই সংশোধনগুলি প্রযোজনায় চেষ্টা করি নি)।


1
কিছু কম্পিউটারে ফিরে আসার পরে আমি শীঘ্রই যাচাই করে নেব এমন কিছু অক্ষরকে অনুমতি দেওয়ার জন্য একটি সেটিংস রয়েছে ...... তবে আপনি কী আপনার URL টি ইউলিনকোড করতে পারবেন?
অ্যাডাম টিউলিপার - এমএসএফটি


আমি জানি না কী কারণে ওয়েবসাইটটি অভ্যন্তরীণভাবে একটি পুনর্নির্দেশের চেষ্টা করছে যা ' লোকালহোস্ট /: // লোকালহোস্ট / মাই ওয়েবসাইট নাম' এর মতো একটি ইউআরএল তৈরি করেছিল যা আমাকে একই ত্রুটি দিচ্ছিল। আমি জানি না কেন এএসপি.এন.পি পাইপলাইন এটিকে একটি বিপজ্জনক অনুরোধের URL হিসাবে বিবেচনা করে।
আরবিটি

আমার ক্ষেত্রে, আমি ইউআরএল-তে একটি স্ল্যাশ মিস করছি। প্রথমে করণীয় হ'ল ইউআরএল টাইপ করার জন্য পরীক্ষা করা।
কিশান বৈষ্ণব

উত্তর:


162

আপনি কনফিগ ফাইলে এই সেটিংস চেষ্টা করতে পারে

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

আমি ইউআরএল পথে '&' এর মতো অক্ষরগুলিকে আন্ডারস্কোর দিয়ে প্রতিস্থাপন করতে এড়াতে চাই।


13
এটি অনুরোধ হিসাবে উপস্থিত হয়েছে পেথআইনডিয়্যালিচারার্স = "" কৌশলটি করেছেন। ধন্যবাদ। আমি স্পষ্টভাবে সম্মত হয়েছি যে আপনি এবং পথে ব্যবহার করা উচিত নয়, দুর্ভাগ্যক্রমে আমরা বহু বছর ধরে এটির অনুমতি দিয়ে আসছি তাই আমাদের এটি সমর্থন অব্যাহত রাখা দরকার।
ব্রায়ান

5
এটি কি সুরক্ষা সমস্যা নয়?
মারিয়াস স্টেনেস্কু

3
@ মারিয়াসস্টানেস্কু - এটি অন্তর্নিহিত কোনও সুরক্ষা সমস্যা নয়; এটি নির্ভর করে আপনি এটি দিয়ে কী করেন। যদি ইনপুটটি নেওয়া হয় এবং পালিয়ে যায় এবং আউটপুটটির সাথে অন্তর্ভুক্ত থাকে তবে তা ঠিক থাকবে। যদি এটি পালানো না যায়, তবে আপনি নিজেকে আক্রমণ থেকে মুক্ত করতে পারেন।
জাস্টিন হেলগারসন

2
এই সমাধানটি আপনাকে এই ত্রুটিটি দিতে পারে: HTTP ত্রুটি 500.19 - অভ্যন্তরীণ সার্ভার ত্রুটি অনুরোধ করা পৃষ্ঠাটি অ্যাক্সেস করা যাবে না কারণ পৃষ্ঠার জন্য সম্পর্কিত কনফিগারেশন ডেটা অবৈধ।
টম স্টিকেল

2
এই উত্তরটি ব্যবহার করার সময় আমিও একটি ত্রুটি 500 পেয়েছি। এটি ইতিমধ্যে <httpআরটাইম> এবং <পৃষ্ঠাগুলি> ট্যাগ থাকার কারণে হয়েছে, সুতরাং এখানে সদৃশ দ্বন্দ্ব ছিল। সমাধান করার পরে, এই উত্তরটি আমার পক্ষেও ভাল কাজ করছে।
কল্লুম ট্যানটন

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" />

যেখানে আমার রুট কনফিগ

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

আপনি যদি এমভিসি তে কেবল কয়েকটি পাঠ্যবক্সের জন্য এইচটিএমএল ট্যাগগুলিকে অনুমতি দিতে চান

আপনি একটি জিনিস করতে পারেন

নিয়ামক মধ্যে

 [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
ওপি স্পষ্টভাবে তার যে ইউআরএলগুলি সমর্থন করতে হবে (টেক্সট বাক্স সামগ্রী নয়) সম্পর্কে কথা বলে এবং এইচটিএমএলের কোনও উল্লেখ নেই - তাই আপনার উত্তরটি প্রদত্ত প্রশ্নের ক্ষেত্রে সত্যই প্রযোজ্য নয়।
অলিভার

2
এটি প্রশ্নের ক্ষেত্রে প্রযোজ্য নয়, তবে আমি এটি উত্থাপন করেছিলাম কারণ এটি এমন কিছু যা আমি জানতাম না এটি একটি বিকল্প ছিল। ধন্যবাদ @ পাভান
মিকজুইস

0

আমাদের সিলভারলাইট আর্কজিআইএস ম্যাপ ভিউয়ারটি কেন মানচিত্রটি লোড করছে না তা নির্ধারণের চেষ্টা করার সময় আমরা ফিডলারে এই একই ত্রুটি পেয়েছিলাম। আমাদের ক্ষেত্রে এটি কোডের URL টি টাইপ ছিল। কোনও কারণে সেখানে একটি সমান চিহ্ন ছিল।
http: = // someurltosome / দুর্দান্ত / স্থান
পরিবর্তে
http: // someurltosome / দুর্দান্ত / স্থান

সেই সমান চিহ্নটি বের করার পরে এটি দুর্দান্ত কাজ করেছে (অবশ্যই)।


0

নীচের লাইনগুলি আপনার ওয়েব কোডফাইগ ফাইলে উপস্থিত রয়েছে তা পরীক্ষা করুন

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

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.