ValidateRequest = "মিথ্যা" Asp.Net 4 এ কাজ করে না


156

আমার একটি ফর্ম রয়েছে যেখানে আমি কিকিটর ব্যবহার করি। এই ফর্মটি Asp.Net 2.0 এবং 3.5 এ কাজ করেছে তবে এখন এটি Asp.Net 4+ এ কাজ করে না। আমার কাছে ValidateRequest = "মিথ্যা" নির্দেশনা রয়েছে। কোনও পরামর্শ?


রেন্ডারিং বৈধতা নিয়ন্ত্রণগুলি সম্পর্কে সঠিকভাবে কোনও সংক্ষিপ্ত নিবন্ধ আছে যদি কেউ যত্নশীল হয়: নেট নেট 4 এ ত্রুটি বৈধকরণ
ইয়ান

কেউ দয়া করে আমাকে জানাতে পারেন যে ভ্যালিডেশনআরকুয়েস্ট = মিথ্যা ব্যবহারের ত্রুটিগুলি কী?
fc123

উত্তর:


194

ত্রুটির পৃষ্ঠায় সমাধান পাওয়া গেছে। কেবলমাত্র অনুরোধভালিডেশন মোড = "2.0" যুক্ত করার দরকার

<system.web>
    <compilation debug="true" targetFramework="4.0" />
    <httpRuntime requestValidationMode="2.0" />
</system.web>

এমএসডিএন তথ্য: এইচটিপিআরটাইমসেকশন


1
এটি দুর্দান্ত, তবে প্রতি পৃষ্ঠায় এটি সেট করার কোনও উপায় কি কেউ জানেন? এছাড়াও আমি এটি কীভাবে ওয়েবকনফাইগে রেখেছি যাতে এটি এখনও। নেট 2 এর সাথে কাজ করে?
এমকে

1
@ এমকে: আমি মনে করি না যে এই সেটিংটির জন্য কোনও পৃষ্ঠা নির্দেশ রয়েছে। আপনি এটি নেট। 2 এ চালু করতে পারবেন না আমি মনে করি না এটি প্রয়োজনীয় হবে। কারণ আপনি কেবলমাত্র একটি ফ্রেম সংস্করণ লক্ষ্য করে একটি ওয়েব অ্যাপ তৈরি করতে পারেন। কেবল এই লাইনটি নেট 4
ওয়েবকনফাইগে

2
কিন্তু। নেট 4 এর বৈধতা কী পরিবর্তন হয়েছে? বৈধতা মোড পরিবর্তন না করে এটি করার কোনও উপায় আছে?
স্লি

4
@ স্লি: আপনি এখানে উত্তর খুঁজে পেতে পারেন: asp.net/learn/ whitepapers
aspnet4

যে কেউ দয়া করে আমাকে জানতে পারেন কেন asp.net application.০ অ্যাপ্লিকেশনটিতে অনুরোধভালিডেশন মোড = "২.০" ব্যবহার করা ভাল ধারণা?
fc123

102

এক পৃষ্ঠার জন্য বৈধতা ২.০ এ ফিরে যাওয়ার উপায় আছে। আপনার ওয়েবকনফাইগে কেবল নীচের কোডটি যুক্ত করুন:

<configuration>
    <location path="XX/YY">
        <system.web>
            <httpRuntime requestValidationMode="2.0" />
        </system.web>
    </location>

    ...
    the rest of your configuration
    ...

</configuration>

অবস্থানটি কোনও পাথ এবং আপনি গাছটিতে যে ফোল্ডারটি নির্দিষ্ট করেছেন তার নীচের কোনও নোডের উপর ভিত্তি করে।
DFTR

7
এই গৃহীত উত্তর চেয়ে ভাল সমাধান পাওয়া যাবে, কারণ এটি ব্যাপক বরং আপনি অবস্থান পাথ সংজ্ঞায়িত নির্দিষ্ট সুযোগ সংকীর্ণ আবেদন নয়
চার্লস ওয়েসলি

5
উপরের <লোকেশন ..> ঘোষণাটি <কনফিগারেশন> ঘোষণার ভিতরে রাখা উচিত তবে আর কোনও নেস্টেড করা উচিত নয়।
rbassett

1
প্রতি পৃষ্ঠার সেটিংটি প্রকল্পগুলির লক্ষ্যবস্তুতে কাজ করছে বলে মনে হচ্ছে না। নেট 4.6.1।
ডেনিস টি

56

আমি জানি এটি একটি পুরানো প্রশ্ন, তবে আপনি যদি এমভিসি 3 এ এই সমস্যার মুখোমুখি হন তবে আপনি আপনার ActionMethodসাথে [ValidateInput(false)]এটি সাজাইয়া রাখতে পারেন এবং কেবলমাত্র একটির জন্য অনুরোধের বৈধতা স্যুইচ অফ করতে পারেন ActionMethodযা সহজ is এবং আপনাকে web.configফাইলটিতে কোনও পরিবর্তন করার দরকার নেই , সুতরাং আপনি অন্য কোথাও। নেট 4 অনুরোধের বৈধতা ব্যবহার করতে পারেন।

যেমন

[ValidateInput(false)]
public ActionMethod Edit(int id, string value)
{
    // Do your own checking of value since it could contain XSS stuff!
    return View();
}

1
@ রোসকুপার এটি কেবল এএসপিএন এমভিসির জন্য
এমএক্সমিসাইল

28

এটি বৈধতা মোড পরিবর্তন না করেই কাজ করে।

আপনাকে এ System.Web.Helpers.Validation.Unvalidatedথেকে কোনও সহায়ক ব্যবহার করতে হবে System.Web.WebPages.dll। এটি এমন কোনও UnvalidatedRequestValuesবস্তু ফেরত যাচ্ছে যা ফর্মটি এবং কোয়েরিস্ট্রিংকে বৈধতা ছাড়াই অ্যাক্সেস করতে দেয়।

উদাহরণ স্বরূপ,

var queryValue = Server.UrlDecode(Request.Unvalidated("MyQueryKey"));

এমভিসি 3 এবং। নেট 4 এর জন্য আমার পক্ষে কাজ করে।


1
আপনি কীভাবে এই পদ্ধতিতে ক্যোয়ারী স্ট্রিং পুনরুদ্ধার করবেন তার উদাহরণ সরবরাহ করতে পারেন? আমি 'অবৈধযুক্ত'র সদস্য হচ্ছি না ...' আমি যে সমস্ত বস্তুকে এতে যুক্ত করার চেষ্টা করি। আমি মনে করি আমি এর একটি অন্তর্ভুক্ত হতে পারে
কোডেডনকি

3
var queryValue = সার্ভার.আরলডেকোড (অনুরোধ.অনুপাতিত ("মাইকিউয়ারিকি"));
sfuqua

1
এটি অবশ্যই গ্রহণযোগ্য উত্তর হওয়া উচিত। সুরক্ষা বজায় রাখে এবং আপনি এটি একটি নির্বাচনি ভিত্তিতে ব্যবহার করতে পারবেন বলে অত্যন্ত নমনীয়।
cmartin


15

নোট করুন যে অন্য পদ্ধতিটি 4.0 বৈধতা আচরণের সাথে রাখা, তবে আপনার নিজের শ্রেণীর সংজ্ঞা দেওয়া যা থেকে প্রাপ্ত RequestValidatorএবং সেট করা হয়েছে:

<httpRuntime requestValidationType="YourNamespace.YourValidator" />

(কোথায় YourNamespace.YourValidator ভাল, আপনি অনুমান করা উচিত ...)

এইভাবে আপনি 4.0 এর আচরণের সুবিধাগুলি রাখেন (বিশেষত, বৈধকরণটি প্রক্রিয়াজাতকরণের আগে হয়) এবং পাশাপাশি আপনাকে যে অনুরোধগুলি দিয়ে যেতে হবে তাও অনুমতি দেয়।


7
এটা জানা ভালো. তবে আমি এখনও মনে করি এএসপি.নেটের পুরো অনুরোধের বৈধতা বৈশিষ্ট্যটি বিপথগামী। ইনপুট নিজেই সমস্যা নয়, এটি আপনি এটি দিয়ে যা করেন। আপনার অ্যাপ্লিকেশনটিতে এসকিউএল, এইচটিএমএল বা জাভাস্ক্রিপ্ট কোডটি ইনপুট হিসাবে গ্রহণ করা পুরোপুরি বৈধ হতে পারে, যতক্ষণ না আপনি আউটপুট দেওয়ার আগে এটি সঠিকভাবে এনকোডিং / এড়িয়ে চলেছেন বা এটি আপনার ডাটাবেসে সংরক্ষণ করবেন।
জর্ডান রিগার 2'12

2
@ জর্ডান রেগার আমি আংশিকভাবে একমত ওওটিবি, এটির পক্ষে কমপক্ষে সুরক্ষিত করার জন্য ডিফল্ট করার সুবিধা রয়েছে (0 টি ভাবার পরিবর্তে জিনিসগুলি মনে করে না এবং আপনি ত্রুটিগুলি পেয়ে যান) তবে এটি কিছুটা উপদ্রব হ'ল এবং 4.0-পূর্বের আচরণটি খুব অ-বা-কিছুই নয়। কাস্টম রিকোয়েস্টভ্যালিডেশন টাইপের মতো অন্য কোনও প্রক্রিয়াজাতকরণের আগে ব্যবহারযোগ্য একটি বৈধতা স্তর রাখার ক্ষমতার কিছু রয়েছে, তবে অন্যান্য প্রসেসিংয়ের সাথে প্রচুর বৈধতা আরও বেশি জড়িত হওয়া দরকার। আমি সর্বোপরি মনে করি ভাল অভ্যাসগুলি উত্সাহিত করার চেয়ে কিছু খারাপ (কিন্তু সমস্ত নয়) বিভক্ত লোকদের থেকে খারাপ অভ্যাসের লোকদের রক্ষা করতে এটি আরও বেশি কাজ করে।
জন হান্না
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.