PDA

View Full Version : سوال: یه مشکل با System.Web.HttpRequest.ValidateString و تشخیص اشتباه XSS



naeeme
سه شنبه 29 مرداد 1387, 14:43 عصر
من در برنامه ام خطاهایی که هندل نشده باشند رو در یک فایل Log می کنم تا بعدا بتونم با مطالعه اون، خطاهای سیستم رو برطرف کنم. از طرف دیگه، برای اینکه مجبور نباشم برای مطالعه این فایل به کنترل پنل سایت برم و از هر جایی( حتی یک کافی نت نا امن) به راحتی بتونم این خطاها رو ببینم، یه قسمت در سایتم گذاشتم که محتوای اون فایل رو در یک textbox به من نمایش میده و این امکان رو دارم که بتونم قسمتی از اون فایل رو ویرایش کنم.

حالا اشکالی که باهاش برخوردم!!
گاهی خطاهایی رخ میدن که در StackTrace اونها یا در پیغامشون از کدهای HTML استفاده شده. وقتی من عملی رو انجام بدم که باعث Postback شدن صفحه بشه، به دلیل داشتن این کدهای HTML در متن فایل، System.Web.HttpRequest.ValidateString تشخیص یک XSS میده و باعث بروز خطا میشه و پیغامی به این مضمون میده:
A potentially dangerous Request.Form value was detected from the client

سوال: من چطور می تونم از رخ دادن این خطا جلوگیری کنم؟؟

نکته:
من حتما باید از textbox استفاده کنم چون می خوام محتوای فایل رو ویرایش کنم.

merlin_vista
سه شنبه 29 مرداد 1387, 14:56 عصر
در تگ Page قسمت ValidateRequest را برابر False بگزار .

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

ببين مشكل حل ميشه ؟

naeeme
سه شنبه 29 مرداد 1387, 15:15 عصر
تشکر Merlin_Vista. البته چون یه ذره این کار خطرناک بود، محتوای خطاها رو با کمک HttpUtility.HtmlEncode تغییر دادم و بعد نمایش تا هم اصل خطا درست باقی بمونه و هم مشکل نمایش نداشته باشم.