ورود

View Full Version : سوال: HttpRequestValidationException کی اتفاق می افتد؟



Ehsan Valinouri
دوشنبه 23 اسفند 1389, 21:38 عصر
با سلام. میخواستم بدانم اکسپشن HttpRequestValidationException چه مواقعی اتفاق می افتد؟

این متن اروری است که در Events Log سرور وب سایت بنده درج شده است:

Exception information:
Exception type: HttpRequestValidationException
Exception message: A potentially dangerous Request.Form value was detected from the client (ctl00$ContentPlaceHolder1$txtComment="... effects. <a href=http://www.f..." (http://www.f...%22/)).

میخواستم بدانم اشکال از چه بخشی می تواند روی داده باشد؟

mehdi.mousavi
سه شنبه 24 اسفند 1389, 00:27 صبح
سلام.
این Exception هنگامی رخ میده که کاربر سعی در ارسال "داده های مخرب" به سرور داشته باشه.
Microsoft اینو در لایه Low Level یک Application بصورت پیش فرض قرار داده تا اگر برنامه نویس فراموش کرد
ورودی کاربر رو اعتبار سنجی کنه، اجرای درخواست با این Exception متوقف بشه و آسیبی به داده ها نرسه.

موفق باشید.

پاورقی: برای غیر فعال کردن این امکان در Web App، میتونید در فایل web.config خودتون خصیصه validateRequest رو set کنید:


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

اگر مایلید تا این امکان رو برای یک صفحه بخصوص غیر فعال کنید، میتونید با استفاده از Page Directive اینکارو کنید:

<%@ Page validateRequest="false" %>

در کل، توصیه می کنم این کارو نکنید.

Ehsan Valinouri
سه شنبه 24 اسفند 1389, 19:37 عصر
ممنون از بابت توضیحات خوب و کامل شما، اما چگونه باید تشخیص داد این داده های مخرب از طریق کدام فرم و کدام تکس باکس ها وارد می شود؟

Ehsan Valinouri
چهارشنبه 10 فروردین 1390, 15:30 عصر
مهدی جان ممنون از رهنماییت اما مشکل با غیر فعال کردن هم حل نشد، اروری که میدهد این است:
DataBinding: 'System.Data.DataRowView' does not contain a property with the name 'Column1'.

و یا:
DataBinding: 'System.Data.DataRowView' does not contain a property with the name 'Title

در حالی که این ارور ها کاملا بی مورد بوده و این 2 فیلد و ستون وجود دارند

alonemm
پنج شنبه 11 فروردین 1390, 10:30 صبح
این خطا ها به اعتبار سنجی داده ها در دات نت ( فعال و غیر فعال کردن این گزینه ) مربوط نمیشه.
از بایند کردن شما به یک منبع داده ای هست که مقادیر ذکر شده درش وجود ندارد.

alonemm
پنج شنبه 11 فروردین 1390, 10:32 صبح
ممنون از بابت توضیحات خوب و کامل شما، اما چگونه باید تشخیص داد این داده های مخرب از طریق کدام فرم و کدام تکس باکس ها وارد می شود؟

درباره این سوال هم:
شما یک متد درست کنید که عملیات اعتبار سنجی متن وارد شده رو کنتل کنه.
قبل از ثبت این رشته و یا هر استفاده دیگری از این متن ها که میتونه از هر جعبه متنی و یا ... باشه رشته رو به متد بدید تا مطمعن بشید که حاوی کدهای مخرب نباشه.