একটি সম্ভাব্য বিপজ্জনক অনুরোধ F ক্লায়েন্টের কাছ থেকে প্রথম মান সনাক্ত করা হয়েছিল


1470

যখনই কোনও ব্যবহারকারী আমার ওয়েব অ্যাপ্লিকেশনটিতে কোনও পৃষ্ঠা <বা >কোনও কিছু পোস্ট করে , আমি এই ব্যতিক্রমটি ছুঁড়ে ফেলি।

আমি কোনও ব্যতিক্রম ছোঁড়ার বা সম্পূর্ণ ওয়েব অ্যাপ্লিকেশনটি ক্র্যাশ করার স্মার্টনেস সম্পর্কে আলোচনায় যেতে চাই না কারণ কোনও পাঠ্য বাক্সে কেউ একটি চরিত্র প্রবেশ করেছে, তবে আমি এটি হ্যান্ডেল করার জন্য একটি মার্জিত উপায় খুঁজছি।

ব্যতিক্রম ফাঁদে এবং দেখানো

একটি ত্রুটি ঘটেছে দয়া করে ফিরে যান এবং আপনার পুরো ফর্মটি আবার টাইপ করুন, তবে এবার দয়া করে <ব্যবহার করবেন না

আমার কাছে যথেষ্ট পেশাদার মনে হচ্ছে না।

পোস্ট বৈধতা অক্ষম করা ( validateRequest="false") অবশ্যই এই ত্রুটিটি এড়াতে সক্ষম হবে, তবে এটি পৃষ্ঠাটিকে বেশ কয়েকটি আক্রমণে দুর্বল করে দেবে।

আদর্শভাবে: যখন কোনও পোস্ট ফিরে আসে যখন এইচটিএমএল সীমাবদ্ধ অক্ষর রয়েছে, ফর্ম সংগ্রহে পোস্টের মানটি স্বয়ংক্রিয়ভাবে এইচটিএমএল এনকোড হবে। সুতরাং .Textআমার পাঠ্য বাক্সের সম্পত্তি হবেsomething & lt; html & gt;

হ্যান্ডলারের কাছ থেকে আমি এটি করার কোনও উপায় আছে কি?


68
মনে রাখবেন যে আপনার ইনপুটটিতেও যদি HTML সত্তার নাম (& amp;) বা সত্তা নম্বর (& # 39;) থাকে তবে আপনি এই ত্রুটিটি পেতে পারেন।
ড্র নোকস

18
ঠিক আছে, এটি আমার প্রশ্ন যেহেতু আমি অনুভব করি যে বিন্দুটি আসলে কী তা নির্ধারণ করতে পারি: একটি সম্পূর্ণ অ্যাপ্লিকেশন প্রক্রিয়া ক্র্যাশ করা এবং জেনেরিক ত্রুটি বার্তা ফিরে আসা কারণ কেউ '<' টাইপ করলে ওভারকিল হয়। বিশেষত যেহেতু আপনি জানেন যে বেশিরভাগ লোকেরা এ থেকে মুক্তি পেতে কেবল 'বৈধতা পরীক্ষা = মিথ্যা' করবে, এইভাবে দুর্বলতার পুনরায় খোলার জন্য
Radu094

7
@ ড্রউনোকস: সত্তার নামগুলি (& amp;) আমার পরীক্ষাগুলি অনুসারে সমস্যা বলে মনে হচ্ছে না (নেট নেট 4.0.০ তে পরীক্ষিত) যদিও সত্তা নম্বর (& # 39;) বৈধতা যাচাই করে (যেমন আপনি বলেছেন) do আপনি যদি সিস্টেমটি বিচ্ছিন্ন করে ফেলেন e ওয়েবে.ক্রসসাইটসস্ক্রিপ্টিংভিডেশন Iআইএসডিঞ্জার্স স্ট্রিং পদ্ধতি। নেট রিফ্লেক্টর ব্যবহার করে, আপনি দেখতে পাবেন যে কোডটি বিশেষত এইচটিএমএল ট্যাগের জন্য দেখায় (<শুরু করে) এবং সত্তা নম্বরগুলি (& # দিয়ে শুরু)
গাইম ফক্স

5
ডিফল্ট এমভিসি প্রকল্প ব্যবহার করে ভিএস2014 এ একটি নতুন সাইট তৈরি করুন এবং এটি চালান। রেজিস্টার লিঙ্কটি ক্লিক করুন, কোনও ইমেল যুক্ত করুন এবং "<P455-0r [" ব্যবহার করুন! পাসওয়ার্ড হিসাবে বাক্সের বাইরে একই ত্রুটি, দূষিত কিছু করার চেষ্টা না করে, পাসওয়ার্ড ক্ষেত্রটি প্রদর্শিত হবে না এটি কোনও এক্সএসএস আক্রমণ হবে না, তবে এটির সমাধানের একমাত্র উপায় হল বৈধতা ইনপুট (মিথ্যা) দিয়ে সম্পূর্ণরূপে বৈধকরণ অপসারণ করা is ? AllowHtml পরামর্শটি এই পরিস্থিতিতে কাজ করে না, এখনও একই ত্রুটির সাথে মিশে গেছে। একটি সম্ভাব্য বিপজ্জনক অনুরোধ F ক্লায়েন্টের কাছ থেকে প্রথম মান সনাক্ত করা হয়েছে (পাসওয়ার্ড = "<P455-0r [!")।
স্টিফেনবায়ার 26'15

টি এল; ডিআর করা <httpRuntime requestValidationMode="2.0" />মধ্যে web.config

উত্তর:


1080

আমি মনে করি আপনি পোস্ট করা সমস্ত ডেটা এনকোড করার চেষ্টা করে এটি ভুল কোণ থেকে আক্রমণ করছেন।

মনে রাখবেন যে " <" বাইরের উত্স থেকে যেমন ডেটাবেস ক্ষেত্র, একটি কনফিগারেশন, একটি ফাইল, একটি ফিড এবং অন্যান্য থেকেও আসতে পারে।

তদতিরিক্ত, " <" অন্তর্নিহিত বিপজ্জনক নয়। এটি কেবলমাত্র নির্দিষ্ট প্রসঙ্গেই বিপজ্জনক: যখন এইচটিএমএল আউটপুটটিতে এনএসড করা হয়নি এমন স্ট্রিংগুলি লিখছেন (এক্সএসএসের কারণে)।

অন্যান্য প্রসঙ্গে বিভিন্ন সাব-স্ট্রিংগুলি বিপজ্জনক, উদাহরণস্বরূপ, আপনি যদি কোনও লিঙ্কে একটি ব্যবহারকারী-সরবরাহিত URL লিখেন তবে সাব-স্ট্রিং javascript:বিপজ্জনক হতে পারে। অন্যদিকে একক উদ্ধৃতি চরিত্রটি এসকিউএল কোয়েরিতে স্ট্রিংগুলি ইন্টারপোল্ট করার সময় বিপজ্জনক, তবে এটি যদি কোনও ফর্ম থেকে জমা দেওয়া নামের একটি অংশ বা ডাটাবেস ক্ষেত্র থেকে পড়া হয় তবে তা নিরাপদ।

নীচের লাইনটি হ'ল: আপনি বিপজ্জনক চরিত্রগুলির জন্য এলোমেলো ইনপুট ফিল্টার করতে পারবেন না, কারণ যে কোনও চরিত্র সঠিক পরিস্থিতিতে বিপজ্জনক হতে পারে। আপনার এমন বিন্দুতে এনকোড করা উচিত যেখানে কিছু নির্দিষ্ট অক্ষরগুলি বিপজ্জনক হয়ে উঠতে পারে কারণ তারা একটি পৃথক সাব-ল্যাঙ্গুয়েজ যেখানে তাদের বিশেষ অর্থ রয়েছে cross আপনি যখন এইচটিএমএলে একটি স্ট্রিং লিখেন, আপনার সার্ভার ব্যবহার করে এমন অক্ষরগুলির এনকোড করা উচিত যা এইচটিএমএল-এর বিশেষ অর্থ রয়েছে। যদি আপনি একটি স্ট্রিমটি ডায়নামিক এসকিউএল স্টেটমেন্টে পাস করেন তবে আপনার বিভিন্ন অক্ষর এনকোড করা উচিত (বা আরও ভাল, ফ্রেমওয়ার্কটি প্রস্তুত স্টেটমেন্ট বা এর মতো ব্যবহার করে আপনার জন্য এটি করা যাক) ..

যখন সব জায়গায় যেখানেই আপনি HTML এ স্ট্রিং পাস নিশ্চিত করুন যে আপনি এইচটিএমএল-সঙ্কেতাক্ষরে লিখা হয়, তারপর সেট validateRequest="false"মধ্যে <%@ Page ... %>আপনার নির্দেশ .aspxফাইল (গুলি)।

নেট 4 এ আপনাকে আরও কিছু করার দরকার হতে পারে। কখনও কখনও এটি <httpRuntime requestValidationMode="2.0" />web.config ( রেফারেন্স ) এ যুক্ত করা প্রয়োজন।


74
দেরীতে যারা আসবেন তাদের কাছে: বৈধতাপ্রাপ্তি = "মিথ্যা" পৃষ্ঠা নির্দেশিকায় যায় (আপনার
.aspx

56
টিপ: <httpRuntime requestValidationMode="2.0" />আপনার সাইটের বাকী অংশ থেকে বৈধতার দ্বারা সরবরাহিত দরকারী সুরক্ষা হত্যা এড়ানোর জন্য একটি অবস্থান ট্যাগ রাখুন ।
ব্রায়ান

297
এমভিসি 3 এ, [AllowHtml]এটি মডেলের সম্পত্তিতে রয়েছে।
জেরেমি হলোভ্যাকস

2
এটা নিষ্ক্রিয় করতে বিশ্বব্যাপী MVC 3 আপনার কাছে প্রয়োজন GlobalFilters.Filters.Add(new ValidateInputAttribute(false));মধ্যে Application_Start()
অ্যালেক্স

15
@MGOwen আপনার কাছে মাধ্যমে web.config পৃষ্ঠাটি নির্দেশ যুক্ত করতে পারেন <pages validateRequest="false" />মধ্যে <system.web />। এটি করার ফলে সম্পত্তিটি সমস্ত পৃষ্ঠায় প্রয়োগ হবে।
অলিভার-ক্লেয়ার

504

আপনি যদি এএসপি.নেট এমভিসি ব্যবহার করেন তবে এই ত্রুটির একটি আলাদা সমাধান রয়েছে:

সি # নমুনা:

[HttpPost, ValidateInput(false)]
public ActionResult Edit(FormCollection collection)
{
    // ...
}

ভিজ্যুয়াল বেসিক নমুনা:

<AcceptVerbs(HttpVerbs.Post), ValidateInput(False)> _
Function Edit(ByVal collection As FormCollection) As ActionResult
    ...
End Function

সমস্যাটি যখন পুরো অ্যাপ্লিকেশনটির একটি পৃষ্ঠায় প্রয়োজন হতে পারে

3
আপনি শ্রেণি স্তরে [ValidateInput (মিথ্যা)] বৈশিষ্ট্যও যুক্ত করতে পারেন। যদি আপনি এটিকে আপনার বেস নিয়ামক শ্রেণিতে যোগ করেন তবে এটি সমস্ত নিয়ামক পদ্ধতি ক্রিয়াতে প্রযোজ্য।
শান প্লুরডে

@ জ্যাক সমাধানের জন্য ধন্যবাদ। অন্যদিকে আমি ভাবছি যে এর [AllowHtml]চেয়ে ভাল কিনা ValidateInput(false), কারণ [AllowHtml]সম্পত্তি হিসাবে একবার হিসাবে সংজ্ঞা দেওয়া হয়েছে যেমন সম্পাদক ক্ষেত্র এবং যখনই এটি ব্যবহৃত হয় তখন বেশ কয়েকটি ক্রিয়াকলাপের জন্য এটি ব্যবহার করার প্রয়োজন হয় না। আপনি কি পরামর্শ দিচ্ছেন?
জ্যাক

@ জ্যাক পিটারসন এটি ব্যবহার করা কি নিরাপদ? কোন সুরক্ষা সমস্যা?
shrey পাভ

416

এএসপি.এনইটি এমভিসিতে (সংস্করণ 3 থেকে শুরু করে), আপনি AllowHtmlআপনার মডেলের কোনও বৈশিষ্ট্যে বৈশিষ্ট্য যুক্ত করতে পারেন ।

এটি সম্পত্তিটির জন্য অনুরোধের বৈধতা এড়িয়ে মডেল বাইন্ডিংয়ের সময় এইচটিএমএল মার্কআপ অন্তর্ভুক্ত করার জন্য একটি অনুরোধকে মঞ্জুরি দেয়।

[AllowHtml]
public string Description { get; set; }

12
কন্ট্রোলারের চেয়ে ঘোষণামূলকভাবে এটি করা আরও ভাল!
Andiih

29
একমাত্র সঠিক উত্তর! নিয়ন্ত্রণকারী ক্রিয়ায় বৈধতা অক্ষম করা হ্যাকি। এবং অ্যাপ্লিকেশন পর্যায়ে বৈধতা অক্ষম করার জন্য, ডেভসকে ফাঁসি দেওয়া উচিত!
trailmax

এটি এমভিসি 4 এ অদৃশ্য হয়ে গেল?
গ্রানাডা কোডার

1
মধ্যে পার্থক্য কি ValidateInput(false)এবং AllowHtml? একে অপরের থেকে কী লাভ? আমি এর AllowHtmlপরিবর্তে কখন ব্যবহার করতে চাই ValidateInput(false)? যখন আমি ব্যবহার করতে চান ValidateInput(false)উপর AllowHtml? আমি কখন দুটোই ব্যবহার করতে চাই? এটি উভয় ব্যবহার করে কি বোধগম্য?
ইয়ান বয়ড

3
ভ্যালিডেটইনপুট পদ্ধতিটিতে রয়েছে, আলোর এইচটিএমএল মডেলের সম্পত্তিতে রয়েছে - সুতরাং আপনি কেবলমাত্র এটিএমটিএমএল প্রত্যাশা করেছেন - সমস্ত কিছু নয়
অ্যান্থনি জনস্টন

213

আপনি। নেট 4.0 এ থাকলে আপনি এটি ট্যাগের ভিতরে আপনার ওয়েব.কমফিগ ফাইলে যুক্ত করেছেন তা নিশ্চিত করুন <system.web>:

<httpRuntime requestValidationMode="2.0" />

.NET 2.0 এ, অনুরোধের বৈধতা কেবলমাত্র aspxঅনুরোধের জন্য প্রয়োগ হয়েছে । .NET 4.0 এ সমস্ত অনুরোধ অন্তর্ভুক্ত করার জন্য এটি প্রসারিত করা হয়েছিল । আপনি নির্দিষ্ট করে প্রক্রিয়া করার সময় কেবলমাত্র XSS বৈধকরণ সম্পাদন করতে ফিরে যেতে পারেন .aspx:

requestValidationMode="2.0"

আপনি নির্দিষ্ট করে অনুরোধটি সম্পূর্ণরূপে অক্ষম করতে পারেন :

validateRequest="false"

30
<system.web>ট্যাগগুলির ভিতরে ।
হোসাম অলি

8
আমি এটি ওয়েবকনফাইগে রেখেছি, তবে তবুও "একটি সম্ভাব্য বিপজ্জনক অনুরোধ F প্রথম মান" ত্রুটি
ফিলিপ

20
দেখে মনে হচ্ছে <http রুনটাইম অনুরোধভালিডেশন মোড = "2.0" /> কেবল তখনই মেশিনে 2.0 ফ্রেমওয়ার্ক ইনস্টল করা হয়। যদি 2.0 ফ্রেমওয়ার্কটি ইনস্টল না হয় তবে কেবলমাত্র 4.0 ফ্রেমওয়ার্ক ইনস্টল করা হয়?
স্যামুয়েল

এটি পুরোপুরি আমার পক্ষে কাজ করেছিল। অন্যান্য উত্তরের পদক্ষেপের নথির কোনওটিই প্রয়োজনীয় ছিল না (যাচাইকরণের অনুরোধ = "মিথ্যা" সহ)!
টম

112

এএসপি.এনইটি ৪.০ এর জন্য, সমস্ত <location>উপাদানকে একটি উপাদানের মধ্যে রেখে আপনি পুরো সাইটের পরিবর্তে নির্দিষ্ট পৃষ্ঠাগুলির জন্য ইনপুট হিসাবে চিহ্নিত করতে পারবেন allow এটি আপনার অন্যান্য পৃষ্ঠাগুলি নিরাপদ কিনা তা নিশ্চিত করবে। আপনি করা প্রয়োজন হবে না ValidateRequest="false"আপনার .aspx পৃষ্ঠা থেকে।

<configuration>
...
  <location path="MyFolder/.aspx">
    <system.web>
      <pages validateRequest="false" />
      <httpRuntime requestValidationMode="2.0" />
    </system.web>
  </location>
...
</configuration>

আপনার ওয়েবকনফাইগের অভ্যন্তরে এটি নিয়ন্ত্রণ করা নিরাপদ, কারণ আপনি কোনও সাইট স্তরে দেখতে পাচ্ছেন যে পৃষ্ঠাগুলি ইনপুট হিসাবে মার্কআপটিকে মঞ্জুরি দেয়।

আপনার অনুরোধের বৈধতা অক্ষম করা আছে যেখানে পৃষ্ঠাগুলিতে প্রোগ্রামগতভাবে ইনপুট বৈধকরণ করতে হবে।


অনুরোধের উপর আরও তথ্যভিডিলেশনমোড = 2 | 4 এখানে: এমএসডিএন.ইমক্রোসফটকম
en

দুঃখজনকভাবে এটি এএসপিএনটি ২.০ এর সাথে কাজ করবে না। HttpRuntime লাইন সরান এবং এটি কাজ করবে।
Fandango68

যখন বৈধতা অক্ষম থাকে তখন আমি ম্যানুয়ালি ইনপুট বৈধকরণের জন্য লোকদের মনে করিয়ে দেওয়ার একটি সতর্কবার্তা যুক্ত করেছি।
কার্টার মেডলিন

72

পূর্ববর্তী উত্তরগুলি দুর্দান্ত, তবে কেউই কোনও একক ক্ষেত্রকে কীভাবে এইচটিএমএল / জাভাস্ক্রিপ্টের ইনজেকশনগুলির জন্য বৈধ হওয়া থেকে বাদ দেবেন তা বলেনি। আমি পূর্ববর্তী সংস্করণগুলি সম্পর্কে জানি না, তবে এমভিসি 3 বিটাতে আপনি এটি করতে পারেন:

[HttpPost, ValidateInput(true, Exclude = "YourFieldName")]
public virtual ActionResult Edit(int id, FormCollection collection)
{
    ...
}

এটি এখনও বাদ দেওয়া বাদে সমস্ত ক্ষেত্রকে বৈধতা দেয়। এ সম্পর্কে দুর্দান্ত বিষয়টি হ'ল আপনার বৈধতা বৈশিষ্ট্যগুলি এখনও ক্ষেত্রটিকে বৈধতা দেয় তবে আপনি কেবল "সম্ভাব্য বিপজ্জনক অনুরোধটি পাবেন না get ক্লায়েন্টের কাছ থেকে প্রথম মান সনাক্ত করা হয়েছিল" ব্যতিক্রমগুলি।

আমি এটি একটি নিয়মিত ভাব প্রকাশের জন্য ব্যবহার করেছি। নিয়মিত এক্সপ্রেশনটি বৈধ কিনা তা দেখার জন্য আমি আমার নিজস্ব বৈধতাঅ্যাট্রিবিউট তৈরি করেছি। নিয়মিত এক্সপ্রেশনতে এমন কোনও কিছু থাকতে পারে যা স্ক্রিপ্টের মতো দেখতে আমি উপরের কোডটি প্রয়োগ করেছি - নিয়মিত প্রকাশটি এখনও বৈধ কিনা তা পরীক্ষা করা হচ্ছে তবে এতে স্ক্রিপ্ট বা এইচটিএমএল রয়েছে কিনা তা নয়।


10
দুঃখজনকভাবে দেখে মনে হচ্ছে বাদ দেওয়া বৈশিষ্ট্যটি এমভিসি 3 আরটিডব্লু থেকে সরানো হয়েছে :(
ম্যাট গ্রেয়ার

2
এটি এমভিসি 4
উইলসজেড 27'13

9
ব্যবহার করুন [AllowHtml]মডেলের বৈশিষ্ট্য পরিবর্তে [ValidateInput]একই শেষ ফলাফল অর্জন করার জন্য কর্মের উপর।
মিচিফ

2
@ ক্রিসটফ নোট করুন যে আমার উত্তরটি 5 বছরের পুরানো। আমি সত্যিই খুব দীর্ঘ সময় এই সমস্যাটি কাটিয়ে উঠতে পারি নি, সুতরাং এর সাথে মোকাবিলা করার আরও অনেক ভাল উপায় থাকতে পারে। এই দুটি বিকল্প সম্পর্কে আমি মনে করি এটি আপনার পরিস্থিতির উপর নির্ভর করে। হতে পারে আপনি সেই মডেলটি একাধিক ক্রিয়াতে প্রকাশ করেছেন এবং কিছু জায়গায় এইচটিএমএলকে অনুমোদিত বা না। এই ক্ষেত্রে [AllowHtml]একটি বিকল্প নয়। আমি এই নিবন্ধটি পরীক্ষা করার পরামর্শ দিচ্ছি: ওয়েবলগস.এএসপি.এন. / মিরানবালচ /… তবে এটিও কিছুটা পুরানো এবং পুরানো হতে পারে।
গিগিগরান

1
বৈধতা থেকে নির্দিষ্ট পদ্ধতির পরামিতিগুলি বাদ দেওয়ার আরও উপায় আছে, আমার উত্তরটি এখানে দেখুন: stackoverflow.com/a/50796666/56621
অ্যালেক্স

51

এএসপি.নেট এমভিসিতে আপনাকে ওয়েবকনফাইগের অনুরোধভেদেশনমড = "২.০" সেট করতে হবে এবং বৈধতা পরীক্ষা করা উচিত "মিথ্যা", এবং আপনার নিয়ামক ক্রিয়ায় একটি বৈধতা ইনপুট বৈশিষ্ট্য প্রয়োগ করতে হবে:

<httpRuntime requestValidationMode="2.0"/>

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

এবং

[Post, ValidateInput(false)]
public ActionResult Edit(string message) {
    ...
}

2
আমার validateRequest="false"জন্য, শুধুমাত্র প্রয়োজনীয় ছিল নাrequestValidationMode="2.0"
tom redfern

অনুরোধভালিডেশনমোড = "২.০" এখনও এইচটিএমএল কোডড ডেটা সহ ত্রুটি উত্পন্ন করে। বেস 64 সবই এনকোড করা ছাড়া কোনও সমাধান নয়, তারপরে এটি প্রেরণ করুন।
এমসি 9000

48

আপনি এইচটিএমএল পাঠ্য বাক্সের সামগ্রী এনকোড করতে পারেন , তবে দুর্ভাগ্যক্রমে এটি ব্যতিক্রম ঘটবে না stop আমার অভিজ্ঞতায় কোনও উপায় নেই, এবং আপনাকে পৃষ্ঠা বৈধতা অক্ষম করতে হবে। এটি করে আপনি বলছেন: "আমি সাবধান থাকব, আমি প্রতিশ্রুতি দিচ্ছি।"


43

এমভিসির জন্য, যুক্ত করে ইনপুট বৈধতা উপেক্ষা করুন

[ValidateInput (মিথ্যা)]

নিয়ন্ত্রকের প্রতিটি ক্রিয়নের উপরে above


এটি কনফিগার করা রুটের মাধ্যমে কন্ট্রোলার পদ্ধতিতে পৌঁছেছে এমন ক্ষেত্রে এটি কাজ করে বলে মনে হচ্ছে না।
পান্ডাউড

প্রকৃতপক্ষে, প্রযুক্তিগত ব্যাখ্যাটি হ'ল এটি কেবল তখনই কাজ করে যখন আপত্তিজনক চরিত্রটি "ক্যোয়ারী স্ট্রিং" এ থাকে ... যদি এটি অনুরোধের পথে হয় তবে
বৈধকরণের

42

আপনি এই ত্রুটিটি Global.asax এ ধরতে পারেন। আমি এখনও যাচাই করতে চাই, তবে একটি উপযুক্ত বার্তা দেখাব। নীচে তালিকাভুক্ত ব্লগে, এর মতো একটি নমুনা পাওয়া গেল।

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

        if (ex is HttpRequestValidationException)
        {
            Response.Clear();
            Response.StatusCode = 200;
            Response.Write(@"[html]");
            Response.End();
        }
    }

অন্য পৃষ্ঠায় পুনঃনির্দেশ করা ব্যতিক্রমকে যুক্তিসঙ্গত প্রতিক্রিয়া বলে মনে হয়।

http://www.romsteady.net/blog/2007/06/how-to-catch-httprequestvalidationexcep.html


40

এই প্রশ্নের উত্তর সহজ:

var varname = Request.Unvalidated["parameter_name"];

এটি নির্দিষ্ট অনুরোধের জন্য বৈধতা অক্ষম করবে।


1
কেবল এএসপি.নেট 4.5 এর জন্য প্রযোজ্য (এবং সম্ভবতঃ এর পরে যা কিছু আসবে)) পূর্ববর্তী 4.5 এটি সমর্থন করে না।
বেসকা

3
আমি আশা করি আমি এইভাবে লাফিয়ে উঠতে পারি। আমি .NET 4.5 ব্যবহার করছি এবং এটি ঠিক আমার প্রয়োজন যেহেতু আমি এমভিসি ব্যবহার করছি না এবং আমি ওয়েবকনফিগ পরিবর্তন করতে পারি না।
ক্রিস গিলাম

1
হ্যাঁ তবে আপনি কী ব্যবহার করছেন? নেট 2? আমাদের কারও কারও কোনও পছন্দ নেই
ফ্যান্ডাঙ্গো 68৮

এটি পোস্ট বা প্যারামিটারগুলি পায়?
সর্বোচ্চ 4

আপনি কি বলছেন এটি ইতিমধ্যে ছুঁড়ে দেওয়া একটি ব্যতিক্রম প্রতিরোধ করে? অথবা .Nat 4.5 তথ্য থেকে পড়া না হওয়া পর্যন্ত ব্যতিক্রম এবং বৈধতা বিলম্বিত করে Request?
ebyrob

34

দয়া করে মনে রাখবেন যে কিছু .NET নিয়ন্ত্রণ স্বয়ংক্রিয়ভাবে HTML আউটপুটটিকে এনকোড করবে। উদাহরণস্বরূপ, একটি পাঠ্যবক্স নিয়ন্ত্রণে টেক্সট সম্পত্তি সেট করা এটি স্বয়ংক্রিয়ভাবে এনকোড হবে। এর সুনির্দিষ্ট অর্থ রূপান্তরিত <করা &lt;, >মধ্যে &gt;এবং &মধ্যে রূপান্তর &amp;। সুতরাং এটি থেকে সাবধান থাকুন ...

myTextBox.Text = Server.HtmlEncode(myStringFromDatabase); // Pseudo code

তবে হাইপারলিঙ্ক, লিটারাল এবং লেবেলের জন্য। পাঠ্য সম্পত্তিটি এইচটিএমএলকে এনকোড করবে না, তাই সার্ভার.হচটিএমএলকোড () মোড়ানো; আপনি যদি <script> window.location = "http://www.google.com"; </script>আপনার পৃষ্ঠাতে আউটপুট আটকানো এবং পরবর্তীকালে মৃত্যুদণ্ড কার্যকর করতে চান তবে এই বৈশিষ্ট্যগুলিতে কোনও কিছু নির্ধারিত হওয়া অবশ্যই প্রয়োজনীয় ।

কী এনকোড হয়ে যায় এবং কী হয় না তা দেখার জন্য কিছুটা পরীক্ষা-নিরীক্ষা করুন।


29

ওয়েবকনফিগ ফাইলে, ট্যাগগুলির মধ্যে, অনুরোধভালিডেশনমোড = "২.০" এর সাহায্যে httpRuntime উপাদানটি সন্নিবেশ করুন। পৃষ্ঠাগুলির উপাদানগুলিতে বৈধতাপ্রয়োগ = "মিথ্যা" বৈশিষ্ট্য যুক্ত করুন।

উদাহরণ:

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

1
আমার জন্য, বৈধতাযোগ্যতা = "মিথ্যা" প্রয়োজনীয় ছিল না, কেবলমাত্র অনুরোধভালিডেশন মোড = "২.০"
টম

3
"পৃষ্ঠাগুলি" বিভাগটি অবশ্যই "system.web" বিভাগের মধ্যে থাকা উচিত।
কার্টার মেডলিন

বিপজ্জনক উত্তর, আবার।
এমসি 9000

আমার দু'জনের দরকার ছিল। ধন্যবাদ
জ্যাক

23

আপনি যদি ValidateRequest অক্ষম করতে না চান তবে ব্যতিক্রম এড়াতে আপনার একটি জাভাস্ক্রিপ্ট ফাংশন প্রয়োগ করতে হবে। এটি সেরা বিকল্প নয়, তবে এটি কাজ করে।

function AlphanumericValidation(evt)
{
    var charCode = (evt.charCode) ? evt.charCode : ((evt.keyCode) ? evt.keyCode :
        ((evt.which) ? evt.which : 0));

    // User type Enter key
    if (charCode == 13)
    {
        // Do something, set controls focus or do anything
        return false;
    }

    // User can not type non alphanumeric characters
    if ( (charCode <  48)                     ||
         (charCode > 122)                     ||
         ((charCode > 57) && (charCode < 65)) ||
         ((charCode > 90) && (charCode < 97))
       )
    {
        // Show a message or do something
        return false;
    }
}

তারপরে পেজলড ইভেন্টে কোডের পিছনে, পরবর্তী কোডের সাহায্যে আপনার নিয়ন্ত্রণে বৈশিষ্ট্য যুক্ত করুন:

Me.TextBox1.Attributes.Add("OnKeyPress", "return AlphanumericValidation(event);")

4
এটি অ্যাপটি মেক-আপ পোষ্ট অনুরোধগুলি থেকে এখনও দুর্বল রাখবে। একজন নিয়মিত ব্যবহারকারীর মতো:: বা উক্তিগুলির মতো অক্ষরগুলিতে প্রবেশ করতে সমস্যা হবে তবে নিয়মিত হ্যাকারের কোনও সমস্যা নেই সার্ভারে বিকৃত ডেটা পোস্ট করতে। আমি এই ওয়ায়াকে নীচে নামিয়ে দেব।
Radu094

13
@ রদু094: এই সমাধানটি আপনাকে ভ্যালিডেটরেক্সেস্ট = সত্য রাখতে দেয়, যার অর্থ হ্যাকাররা এখনও সেই দেয়ালে আঘাত করবে। ইউপি ভোট দিন, যেহেতু এটি আপনাকে বৈধতা রক্ষণাবেক্ষণ বন্ধ করার চেয়ে কম দুর্বল করে।
jbehren

21

দেখে মনে হচ্ছে এখনও কেউ নীচের কথা উল্লেখ করেনি, তবে এটি আমার জন্য সমস্যাটি সমাধান করে। এবং কেউ হ্যাঁ বলার আগে এটি ভিজ্যুয়াল বেসিক ... হ্যাঁ।

<%@ Page Language="vb" AutoEventWireup="false" CodeBehind="Example.aspx.vb" Inherits="Example.Example" **ValidateRequest="false"** %>

কোন ডাউনসাইড আছে কিনা তা আমি জানি না, তবে আমার জন্য এটি আশ্চর্যজনকভাবে কাজ করেছে।


সি # বা ভিবি ওয়েব ফর্মগুলির জন্য কাজ করে
TheAlbear

19

আর একটি সমাধান হ'ল:

protected void Application_Start()
{
    ...
    RequestValidator.Current = new MyRequestValidator();
}

public class MyRequestValidator: RequestValidator
{
    protected override bool IsValidRequestString(HttpContext context, string value, RequestValidationSource requestValidationSource, string collectionKey, out int validationFailureIndex)
    {
        bool result = base.IsValidRequestString(context, value, requestValidationSource, collectionKey, out validationFailureIndex);

        if (!result)
        {
            // Write your validation here
            if (requestValidationSource == RequestValidationSource.Form ||
                requestValidationSource == RequestValidationSource.QueryString)

                return true; // Suppress error message
        }
        return result;
    }
}

নিস! অনুরোধ বৈধকারক প্রতিস্থাপন করার ক্ষমতা সম্পর্কে সচেতন ছিল না। আপনার মত কেবল "ঠিক আছে" বলার পরিবর্তে আমি এই ধারণাটি প্রসারিত ক্ষেত্রগুলিকে তাদের নাম হিসাবে বৈধ না করার জন্য প্রসারিত করেছি। নীচে কোড।
ওয়াল্ডেন লিভারিচ

ওয়াল্ডেন লিভারিচ, এটি করার জন্য [AllowHtml] বৈশিষ্ট্যটি দেখুন
সেল করুন

সেল, হ্যাঁ এমন একটি এমভিসি পরিবেশে যে কাজ করবে। তবে একটি ওয়েবফর্ম অ্যাপ্লিকেশনটিতে আমার এটি করার কোনও মডেল নেই। :-)
ওয়াল্ডেন লিভারিচ

15

আপনি যদি ফ্রেমওয়ার্ক 4.0.০ ব্যবহার করছেন তবে ওয়েবকনফাইগ এ প্রবেশ করুন (<পৃষ্ঠাগুলি যাচাই করুন = "মিথ্যা" />)

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

আপনি যদি ফ্রেমওয়ার্ক 4.5 ব্যবহার করেন তবে ওয়েবকনফাইগ এ প্রবেশ (অনুরোধভালিডেশন মোড = "2.0")

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

আপনি যদি কেবলমাত্র একটি পৃষ্ঠার জন্য চান তবে, আপনার এসপেক্স ফাইলটিতে আপনার প্রথম লাইনটি এই হিসাবে রাখা উচিত:

<%@ Page EnableEventValidation="false" %>

আপনার যদি ইতিমধ্যে <% @ পৃষ্ঠার মতো কিছু থাকে তবে কেবলমাত্র বাকী => EnableEventValidation="false"%> যুক্ত করুন

আমি এটি না করার পরামর্শ দিই।


13

এএসপি.নেটে, আপনি ব্যতিক্রমটি ধরতে পারেন এবং এ সম্পর্কে কিছু করতে পারেন, যেমন বন্ধুত্বপূর্ণ বার্তা প্রদর্শন করা বা অন্য পৃষ্ঠায় পুনর্নির্দেশ করা ... এছাড়াও আপনার নিজের দ্বারা বৈধতাটি পরিচালনা করতে পারে এমন সম্ভাবনা রয়েছে ...

বন্ধুত্বপূর্ণ বার্তা প্রদর্শন করুন:

protected override void OnError(EventArgs e)
{
    base.OnError(e);
    var ex = Server.GetLastError().GetBaseException();
    if (ex is System.Web.HttpRequestValidationException)
    {
        Response.Clear();
        Response.Write("Invalid characters."); //  Response.Write(HttpUtility.HtmlEncode(ex.Message));
        Response.StatusCode = 200;
        Response.End();
    }
}

13

আমার ধারণা আপনি এটি একটি মডিউলে করতে পারবেন; কিন্তু যে পাতা কিছু প্রশ্ন খুলুন; আপনি যদি কোনও ডাটাবেসে ইনপুট সংরক্ষণ করতে চান? হঠাৎ কারণ আপনি ডাটাবেজে এনকোডড ডেটা সংরক্ষণ করছেন আপনি এটির কাছ থেকে বিশ্বাসের ইনপুটটি শেষ করবেন যা সম্ভবত একটি খারাপ ধারণা। আদর্শভাবে আপনি প্রতিবার ডাটাবেস এবং এনকোডে কাঁচা আনইনকোডড ডেটা সঞ্চয় করেন।

প্রতি পৃষ্ঠার স্তরে সুরক্ষা অক্ষম করা এবং তারপরে প্রতিবার এনকোড করা ভাল বিকল্প।

সার্ভার.এইচটিএমএল এনকোড ব্যবহার করার পরিবর্তে আপনার মাইক্রোসফ্ট এসিই টিম থেকে আরও সম্পূর্ণ অ্যান্টি-এক্সএসএস লাইব্রেরীর দিকে নজর দেওয়া উচিত ।


12

কারণ

এএসপি.এনইটি ডিফল্টরূপে সম্ভাব্য অনিরাপদ বিষয়বস্তুর জন্য সমস্ত ইনপুট নিয়ন্ত্রণকে বৈধতা দেয় যা ক্রস-সাইট স্ক্রিপ্টিং (এক্সএসএস) এবং এসকিউএল ইঞ্জেকশনগুলিতে নিয়ে যেতে পারে । সুতরাং এটি উপরের ব্যতিক্রম ছুঁড়ে ফেলে এ জাতীয় সামগ্রীটিকে অস্বীকার করে। ডিফল্টরূপে প্রতিটি পোস্টব্যাকে এই চেকটি হওয়ার অনুমতি দেওয়ার জন্য সুপারিশ করা হয়।

সমাধান

অনেক সময় আপনাকে রিচ টেক্সটবক্স বা রিচ টেক্সট এডিটরদের মাধ্যমে আপনার পৃষ্ঠায় এইচটিএমএল সামগ্রী সরবরাহ করতে হবে। সেক্ষেত্রে আপনি ভ্যালিডেটরাইভেস্ট ট্যাগকে @Pageভুয়া নির্দেশে সেট করে এই ব্যতিক্রমটি এড়াতে পারবেন ।

<%@ Page Language="C#" AutoEventWireup="true" ValidateRequest = "false" %>

আপনি যে পৃষ্ঠাটি ভ্যালিডেটরাইভেস্ট পতাকাটি মিথ্যা হিসাবে সেট করেছেন তাতে অনুরোধের বৈধতা এটি অক্ষম করবে। আপনি যদি এটি অক্ষম করতে চান, আপনার ওয়েব অ্যাপ্লিকেশন জুড়ে চেক করুন; আপনাকে এটি আপনার ওয়েব কোডফাইগ <সিস্টেম.web> বিভাগে মিথ্যাতে সেট করতে হবে

<pages validateRequest ="false" />

.NET 4.0 বা উচ্চতর ফ্রেমওয়ার্কগুলির জন্য উপরের কাজটি করার জন্য আপনাকে <system.web> বিভাগে নিম্নলিখিত লাইনটি যুক্ত করতে হবে।

<httpRuntime requestValidationMode = "2.0" />

এটাই. আমি আশা করি এটি উপরোক্ত সমস্যা থেকে মুক্তি পেতে আপনাকে সহায়তা করবে।

এর দ্বারা রেফারেন্স: এএসপি.নেট ত্রুটি: একটি সম্ভাব্য বিপজ্জনক অনুরোধ F ক্লায়েন্টের কাছ থেকে প্রথম মান সনাক্ত করা হয়েছিল


10

আমি এমন একটি সমাধান পেয়েছি যা ডেটা এনকোড করতে জাভাস্ক্রিপ্ট ব্যবহার করে, যা .NET এ ডিকোড করা হয় (এবং jQuery এর প্রয়োজন হয় না)।

  • একটি এএসপি পরিবর্তে পাঠ্যবাক্সটিকে এইচটিএমএল উপাদান (যেমন টেক্সারিয়া) করুন।
  • একটি লুকানো ক্ষেত্র যুক্ত করুন।
  • আপনার শিরোনামে নিম্নলিখিত জাভাস্ক্রিপ্ট ফাংশন যুক্ত করুন।

    ফাংশন বু () {টার্গেটেক্সট = ডকুমেন্ট.জেট এলিমেন্টবাইআইডি ("হাইডফিল্ড 1"); উত্সটেক্সট = ডকুমেন্ট.জেট এলিমেন্টবাইআইডি ("ইউজারবক্স"); টার্গেটটেক্সট.ভ্যালু = এস্কেপ (সোর্সটেক্সট.ইন.ইন.টেক্সট); }

আপনার টেক্সেরিয়ায়, এমন একটি পরিবর্তন অন্তর্ভুক্ত করুন যা বুকে কল করে ():

<textarea id="userbox"  onchange="boo();"></textarea>

অবশেষে। নেট, ব্যবহার করুন

string val = Server.UrlDecode(HiddenField1.Value);

আমি সচেতন যে এটি একমুখী - আপনার যদি দ্বি-মুখী দরকার হয় তবে আপনাকে সৃজনশীল হতে হবে তবে আপনি ওয়েবকন্টফাইগ সম্পাদনা করতে না পারলে এটি একটি সমাধান সরবরাহ করে

এখানে আমি (এমসি 9000) একটি উদাহরণ নিয়ে এসেছি এবং jQuery এর মাধ্যমে ব্যবহার করেছি:

$(document).ready(function () {

    $("#txtHTML").change(function () {
        var currentText = $("#txtHTML").text();
        currentText = escape(currentText); // Escapes the HTML including quotations, etc
        $("#hidHTML").val(currentText); // Set the hidden field
    });

    // Intercept the postback
    $("#btnMyPostbackButton").click(function () {
        $("#txtHTML").val(""); // Clear the textarea before POSTing
                               // If you don't clear it, it will give you
                               // the error due to the HTML in the textarea.
        return true; // Post back
    });


});

এবং মার্কআপ:

<asp:HiddenField ID="hidHTML" runat="server" />
<textarea id="txtHTML"></textarea>
<asp:Button ID="btnMyPostbackButton" runat="server" Text="Post Form" />

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


এটি একটি ভাল সমাধান। এটিকে নিজেই নিয়ন্ত্রণ করার সঠিক ম্যানুয়াল উপায় এবং পুরো ওয়েবসাইট বা পৃষ্ঠাটি অবৈধ না করে
Fandango68

এইচটিএমএল মার্কআপ ব্যবহার করার বিষয়টি নিশ্চিত করুন, টেক্সারিয়ার জন্য কোনও এএসপি নয় নেট নিয়ন্ত্রণ (অর্থাত্ কোনও রানাত = "সার্ভার" নয়), তবে গোপনের জন্য এএসপি.নেট লুকানো নিয়ন্ত্রণ ব্যবহার করুন। এটিই সেরা সমাধান যা আমি ডাব্লু / ও যে কোনও বিষয়ে আপোস করতে দেখেছি। স্বাভাবিকভাবেই, আপনি সার্ভারের পাশে এক্সএসএস, এসকিউএল ইঞ্জেকশনের জন্য আপনার ডেটা পার্স করতে চান তবে অন্তত আপনি এইচটিএমএল পোস্ট করতে পারেন
MC9000

escape(...)একটি দীর্ঘ সময় নিতে পারে। আমার ক্ষেত্রে, মার্কআপটি একটি সম্পূর্ণ (2 এমবি) এক্সএমএল ফাইল ছিল। আপনি জিজ্ঞাসা করতে পারেন, "আপনি কেবল কেন ব্যবহার করবেন না <input type="file"...এবং ... আমি আপনার সাথে একমত আছি :)
দ্য রেড মটরটি

10

এখানে অন্যান্য সমাধানগুলি দুর্দান্ত, তবে প্রতি একক মডেল সম্পত্তিতে [AllowHtml] প্রয়োগ করার জন্য এটি পিছনে কিছুটা রয়্যাল ব্যথা হয়, বিশেষত যদি আপনার একটি শালীন আকারের সাইটে 100 টিরও বেশি মডেল থাকে।

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

    protected override void Execute(RequestContext requestContext)
    {
        // Disable requestion validation (security) across the whole site
        ValidateRequest = false;
        base.Execute(requestContext);
    }

কেবলমাত্র নিশ্চিত হয়ে নিন যে আপনি ব্যবহারকারীর ইনপুট থেকে আসা ভিউগুলিতে পাম্পযুক্ত সমস্ত কিছু এইচটিএমএলকে এনকোড করছেন (যাইহোক যাইহোক রেজারের সাথে এটিএসপি নেট নেট এমভিসি 3 এ ডিফল্ট আচরণ, সুতরাং কোনও উদ্ভট কারণে যদি আপনি এইচটিএমএল.রউ () ব্যবহার করেন না তবে এই বৈশিষ্ট্যটির প্রয়োজন হবে না।


9

আমিও এই ত্রুটি পেয়ে যাচ্ছিলাম।

আমার ক্ষেত্রে, কোনও ব্যবহারকারী áএকটি ভূমিকার নামতে (এএসপি.এনইটি সদস্যপদ সরবরাহকারী সম্পর্কিত) একটি স্বরযুক্ত চরিত্র প্রবেশ করিয়েছে।

ব্যবহারকারীদের সেই ভূমিকাটিতে অনুদান দেওয়ার একটি পদ্ধতিতে আমি ভূমিকাটির নামটি পাস করি এবং $.ajaxপোস্টের অনুরোধটি খারাপভাবে ব্যর্থ হয়েছিল ...

সমস্যাটি সমাধান করার জন্য আমি এটি করেছি:

পরিবর্তে

data: { roleName: '@Model.RoleName', users: users }

এটা কর

data: { roleName: '@Html.Raw(@Model.RoleName)', users: users }

@Html.Raw কৌতুকটি করেছে

আমি এইচটিএমএল মান হিসাবে ভূমিকা নাম পাচ্ছিলাম roleName="Cadastro b&#225;s"। এইচটিএমএল সত্তা সহ এই মানটি &#225;এএসপি.নেট এমভিসি দ্বারা অবরুদ্ধ করা হয়েছিল। এখন আমি roleNameপ্যারামিটারের মানটি যেভাবে হওয়া উচিত তা পেয়েছি : roleName="Cadastro Básico"এবং এএসপি.নেট এমভিসি ইঞ্জিন আর অনুরোধটিকে অবরুদ্ধ করবে না।


9

পৃষ্ঠা বৈধতা অক্ষম যদি সত্যিই ভালো, বিশেষ অক্ষর প্রয়োজন >, <ইত্যাদি তখন নিশ্চিত যখন ব্যবহারকারীর ইনপুট প্রদর্শিত হয়, ডেটা HTML এনকোডেড হয়।

পৃষ্ঠার বৈধতা সহ সুরক্ষার দুর্বলতা রয়েছে, তাই এটি বাইপাস করা যায়। এছাড়াও পৃষ্ঠার বৈধতা সম্পূর্ণরূপে নির্ভর করা উচিত নয়।

দেখুন: http://web.archive.org/web/20080913071637/http://www.procheckup.com:80/PDFs/bypassing-dot-NET-ValidateRequest.pdf


লিঙ্কটি নষ্ট হয়ে গেছে।
পিটার মর্টেনসেন

7

আপনি বিশেষ অক্ষরগুলি প্রতিস্থাপন করতে জাভাস্ক্রিপ্টের পলায়ন (স্ট্রিং) ফাংশনটিও ব্যবহার করতে পারেন । তারপরে সার্ভারের পাশ দিয়ে সার্ভার ব্যবহার করুন। URLDecode (STRING)এটিকে আবার স্যুইচ করতে ।

এইভাবে আপনাকে ইনপুট বৈধতা বন্ধ করতে হবে না এবং এটি অন্যান্য প্রোগ্রামারদের কাছে আরও স্পষ্ট হবে যে স্ট্রিংটিতে এইচটিএমএল সামগ্রী থাকতে পারে।


7

আপনি চান না এমন অক্ষরগুলি পরীক্ষা করতে প্রতিটি পোস্টব্যাকের আগে আমি জাভাস্ক্রিপ্ট ব্যবহার করে শেষ করেছি:

<asp:Button runat="server" ID="saveButton" Text="Save" CssClass="saveButton" OnClientClick="return checkFields()" />

function checkFields() {
    var tbs = new Array();
    tbs = document.getElementsByTagName("input");
    var isValid = true;
    for (i=0; i<tbs.length; i++) {
        if (tbs(i).type == 'text') {
            if (tbs(i).value.indexOf('<') != -1 || tbs(i).value.indexOf('>') != -1) {
                alert('<> symbols not allowed.');
                isValid = false;
            }
        }
    }
    return isValid;
}

অনুমোদিত আমার পৃষ্ঠাটি বেশিরভাগই ডেটা এন্ট্রি, এবং খুব কম উপাদান রয়েছে যা পোস্টব্যাক করে তবে কমপক্ষে তাদের ডেটা বজায় থাকে।


ছোট বন্ধনীগুলির পরিবর্তে বড় বন্ধনী থাকা উচিত। `If ​​(tbs [i]। টাইপ == 'পাঠ্য') {place এর জায়গায় Like if (tbs (i)। টাইপ == 'পাঠ্য') এর মতো Like`
শিল্প সোনি

5

আপনি এর মতো কিছু ব্যবহার করতে পারেন:

var nvc = Request.Unvalidated().Form;

পরে, nvc["yourKey"]কাজ করা উচিত।


ধন্যবাদ, আপনার উত্তরটি আমার অনেক সময় সাশ্রয় করেছে
হবিব

4

যতক্ষণ এগুলি কেবল "<" এবং ">" (এবং ডাবল উদ্ধৃতি নিজেই নয়) অক্ষর থাকে এবং আপনি সেগুলিকে <ইনপুট মান = " এটি " /> এর মতো ব্যবহার করছেন তবে আপনি নিরাপদ (<টেক্সারিয়া থাকাকালীন) > এটি অবশ্যই << টেক্সটারে </a> আপনি অবশ্যই দুর্বল হবেন)। আপনার পরিস্থিতি প্রক্রিয়া সহজ হতে পারে, কিন্তু এর জন্য কিছু অধিক জন পোস্ট করেছেন সমাধান ব্যবহার করুন।


4

আপনি যদি কেবলমাত্র আপনার ব্যবহারকারীদের বলতে চাইছেন যে <এবং> কিন্তু ব্যবহার করা যাবেনা তবে আপনি পুরো ফর্মটি প্রক্রিয়া করা / পোস্ট করতে চান না (এবং সমস্ত ইনপুট হারাবেন) আপনি কেবল হাতে রাখতে পারেন না ক্ষেত্রের চারপাশে যাচাইকারীরা (এবং সম্ভবত অন্যান্য সম্ভাব্য বিপজ্জনক) চরিত্রগুলির জন্য স্ক্রিন করতে পারেন?


পোস্টটি "
বৈধকারক

4

পরামর্শগুলির কোনওোটাই আমার পক্ষে কাজ করেনি। আমি কোনওভাবেই পুরো ওয়েবসাইটটির জন্য এই বৈশিষ্ট্যটি বন্ধ করতে চাইনি কারণ 99% সময় আমি চাই না যে আমার ব্যবহারকারীরা ওয়েব ফর্মগুলিতে এইচটিএমএল রাখবে। আমি কেবল পদ্ধতিটির আশেপাশে আমার নিজস্ব কাজ তৈরি করেছি কারণ আমি এই বিশেষ অ্যাপ্লিকেশনটি ব্যবহার করছি I'm আমি ইনপুটটি এইচটিএমএলকে পেছনের কোডটিতে রূপান্তর করি এবং এটি আমার ডাটাবেসে সন্নিবেশ করি।

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