PDA

View Full Version : چگونه از آسیب کدهای جاوا اسکریپت در تکس باکس جلوگیری کنیم



bitcob589
چهارشنبه 06 شهریور 1392, 20:37 عصر
با سلام
یک تکس باکس وجود دارد که کاربر متنی را در تکس باکس تایپ می کند و متن وارد شده با دیتابیس مقایسه می گردد چگونه می توان از آسیب کدهای جاوا اسکریپت نوشته شده در تکس باکس از ایجاد از بروز خطا و ایجاد اشکال در دیتابیس جلوگیری کنیم

ahmad156
چهارشنبه 06 شهریور 1392, 20:41 عصر
دوست عزیز این حملات XSS می باشد مشکلی برای DataBase به وجود نمیاره ولی خرابکاری های دیگه ای رو میتونه باعث شه.

bitcob589
چهارشنبه 06 شهریور 1392, 20:42 عصر
دوست عزیز این حملات XSS می باشد مشکلی برای DataBase به وجود نمیاره ولی خرابکاری های دیگه ای رو میتونه باعث شه.

چگونه از خرابکاری ها جلوگیری کنیم

ahmad156
جمعه 08 شهریور 1392, 11:20 صبح
http://www.dotnettips.info/post/562/%D9%85%D9%82%D8%A7%D8%A8%D9%84%D9%87-%D8%A8%D8%A7-xss-%DB%8C%DA%A9%D8%A8%D8%A7%D8%B1-%D8%A8%D8%B1%D8%A7%DB%8C-%D9%87%D9%85%DB%8C%D8%B4%D9%87

bitcob589
جمعه 15 شهریور 1392, 19:26 عصر
کد زیر در لینک بالا گذاشته شده بود

if (!allowHtmltags)
{

collection[collection.Keys[i]] =
AntiXss.HtmlEncode(_cleanAllTags.Replace(collectio n[i], string.Empty));
}
else
{

if (collection.Keys[i].StartsWith("__VIEWSTATE")) continue;

collection[collection.Keys[i]] = Sanitizer.GetSafeHtml(collection[i]);
}
SanitizerوAntiXss چیست در زمان استفاده SanitizerوAntiXss خطا گرفته می شود

mohsen200162
جمعه 15 شهریور 1392, 20:53 عصر
با استفاده از replace می توان مقدار تکس باکس را چک کنید و هر جایی از < و > استفاده کرده اونو به "" تغییر داد
چون دستورات جاوا حتما باید از طریق >و< استفاده کنن

bitcob589
شنبه 16 شهریور 1392, 18:15 عصر
با استفاده از replace می توان مقدار تکس باکس را چک کنید و هر جایی از < و > استفاده کرده اونو به "" تغییر داد
چون دستورات جاوا حتما باید از طریق >و< استفاده کنن

ممکن است در متن نوشته شده در تکس باکس وجود کارکتر < و > الزامی باشد اگر < و > حذف کنیم متن بی معنا گردد:ناراحت:

ahmad156
شنبه 16 شهریور 1392, 19:16 عصر
با استفاده از replace می توان مقدار تکس باکس را چک کنید و هر جایی از < و > استفاده کرده اونو به "" تغییر داد
چون دستورات جاوا حتما باید از طریق >و< استفاده کنن
دوست عزیز بحث حملات XSS بیشتر زمانی اهمیت داره که شما از ادیتورها استفاده میکنین.
خب ادیتور هم که برای قشنگی نیست:لبخندساده: برای اینه که شما متن مورد نظرتون رو (که شامل متن خالی،عکس،...) به همراه استایل هایی که به وسیله ادیتور روی اون اعمال میکنین که خروجی اون HTML هست در DataBase ذخیره کنین.HTML هم که بدون >< بی معنی هست

bitcob589
شنبه 16 شهریور 1392, 19:22 عصر
http://www.dotnettips.info/post/562/%D9%85%D9%82%D8%A7%D8%A8%D9%84%D9%87-%D8%A8%D8%A7-xss-%DB%8C%DA%A9%D8%A8%D8%A7%D8%B1-%D8%A8%D8%B1%D8%A7%DB%8C-%D9%87%D9%85%DB%8C%D8%B4%D9%87
اگر امکان دارد یک سمپل بگذارید
در هنگام استفاده از کدها خطای که از پست 5 نوشته شده است وجود دارد

bitcob589
سه شنبه 19 شهریور 1392, 09:17 صبح
چگونه کدی که در لینک پست 4 گذاشته شده است بدون خطا بر روی تکس باکس پیاده سازی کرد

لطفا راهنمایی بفرمایید:ناراحت::ناراحت::گر ه::گریه:

saeed_sho
سه شنبه 19 شهریور 1392, 17:30 عصر
اون کدی که نوشتین از .dll antiXss استفاده کرده که ماله مایکروسافته
باید دانلودش کنید
سرچ کنید

bitcob589
سه شنبه 19 شهریور 1392, 20:41 عصر
اون کدی که نوشتین از .dll antiXss استفاده کرده که ماله مایکروسافته
باید دانلودش کنید
سرچ کنید

لینک دانلود را پیدا نکردم لطفا لینک دانلود بگذارید:ناراحت:

mohsen200162
چهارشنبه 20 شهریور 1392, 22:20 عصر
http://wpl.codeplex.com/releases/view/80289

bitcob589
یک شنبه 31 شهریور 1392, 09:15 صبح
یک تکس باکس و یک دکمه دارم چگونه با کلیک بر روی دکمه کدی که در لینک پست 4 است اجرا کنیم

Kurdia
یک شنبه 31 شهریور 1392, 15:23 عصر
مشکل منم دقیقا همیبنه
شما یک سرچ دو کلمه ای توی گوگل بزن
مثلا "Word/Word"
لینک رو نگاه کن
Word%2FWord
به جای "/" می زنه "%2F"
اما برای < و > عمل نمی کنه
باید ببینیم با چه مقداری می تونیم Replace بزنیم

bitcob589
دوشنبه 01 مهر 1392, 07:46 صبح
مشکل منم دقیقا همیبنه
شما یک سرچ دو کلمه ای توی گوگل بزن
مثلا "Word/Word"
لینک رو نگاه کن
Word%2FWord
به جای "/" می زنه "%2F"
اما برای < و > عمل نمی کنه
باید ببینیم با چه مقداری می تونیم Replace بزنیم

اگر به نتیجه ای رسیدید نتیجه بگذارید

bitcob589
دوشنبه 01 مهر 1392, 07:50 صبح
چگونه کدهای لینک پست 4 را در یک دکمه می توان پیاده سازی کرد

لطفا راهنمایی بفرمایید:ناراحت::ناراحت:

Kurdia
دوشنبه 01 مهر 1392, 18:47 عصر
اینم جواب (http://msdn.microsoft.com/en-us/library/ms525347%28v=vs.90%29.aspx)
مقادیر رو جایگزین کن

sasanrstm
چهارشنبه 03 مهر 1392, 18:20 عصر
واقعا کسی اینجا نمیدونه چیکار باید کرد این آدرسهائی که میدیدن هیچکدوم کارائی نداره. کسی یه کد شسته ورفته نداره بزاره اینجا. بیخودی وقت مون هم هدر نره.
ممنون از دوستان برنامه نویس:عصبانی++:

bitcob589
دوشنبه 08 مهر 1392, 10:11 صبح
چگونه می توان توضیحات پست 1 پیاده سازی کرد

farhud
دوشنبه 08 مهر 1392, 10:41 صبح
شما می‌تونید از Server.HtmlEncode استفاده کنید. این دستور کاراکترهای خاص را به کد html آنها تبدیل می‌کنه. مثلا کاراکتر > به &lt; تبدیل میشه.

توضیحات مایکروسافت در این زمینه (http://msdn.microsoft.com/en-us/library/ms525347(v=vs.90).aspx)

bitcob589
دوشنبه 08 مهر 1392, 19:18 عصر
در زمانی که از Server.HtmlEncode استفاده می شود باعث بروز خطا می شود

farhud
سه شنبه 09 مهر 1392, 11:09 صبح
باعث چه خطایی میشه؟ متن خطا؟

bitcob589
چهارشنبه 10 مهر 1392, 10:19 صبح
خطای زیر نمایش داده می شود
111390

ValidateRequest صفحه false شد

farhud
پنج شنبه 11 مهر 1392, 14:28 عصر
مقدار ValidateRequest="false" را به تگ Page (خط اول) اضافه کن.

البته با استفاده از Server.HtmlEncode دیگر نگران کدهای مخرب نباش.

bitcob589
جمعه 12 مهر 1392, 09:18 صبح
مقدار ValidateRequest="false" را به تگ Page (خط اول) اضافه کن.

البته با استفاده از Server.HtmlEncode دیگر نگران کدهای مخرب نباش.

توضیحاتی که در پست 25 داده شد انجام شد همچنان خطای پست 24 نمایش داده می شود

Kurdia
جمعه 12 مهر 1392, 14:31 عصر
مقدار رو True کن

bitcob589
شنبه 13 مهر 1392, 06:47 صبح
مقدار رو True کن

مقدار True شد همچنان خطای پست 24 نمایش داده می شود

farhud
شنبه 13 مهر 1392, 08:02 صبح
این را هم امتحان کن:

EnableEventValidation="false"

bitcob589
شنبه 13 مهر 1392, 11:10 صبح
این را هم امتحان کن:

EnableEventValidation="false"
همچنان خطای پست 24 نمایش داده می شود

farhud
شنبه 13 مهر 1392, 11:15 صبح
:متعجب:

پس مشکل جای دیگری است!

bitcob589
شنبه 13 مهر 1392, 11:56 صبح
اگر امکان دارد یک سمپل بگذارید

bitcob589
یک شنبه 14 مهر 1392, 11:13 صبح
آیا روشی وجود دارد که از از آسیب کدهای جاوا اسکریپت در تکس باکس جلوگیری کنیم از ایجاد خطای که در پست 24 است جلوگیری کنیم

لطفا راهنمایی بفرمایید:گریه::ناراحت::گریه:

bitcob589
دوشنبه 15 مهر 1392, 16:32 عصر
آیا روشی وجود ندارد که از آسیب کدهای جاوا اسکریپت در تکس باکس جلوگیری کنیم

Kurdia
سه شنبه 16 مهر 1392, 13:15 عصر
اینو نگاه کن (http://msdn.microsoft.com/en-us/library/ms525347%28v=vs.90%29.aspx)
اگر Server.HTMLEncode جواب نمی ده دستی جایگزین کن

با Replace

bitcob589
سه شنبه 16 مهر 1392, 13:37 عصر
اینو نگاه کن (http://msdn.microsoft.com/en-us/library/ms525347%28v=vs.90%29.aspx)
اگر Server.HTMLEncode جواب نمی ده دستی جایگزین کن

با Replace
اگر با Replace جایگزین کنیم در زمانی که از Encode وDecode می کنیم ممکن کدهای html و جاوا اسکریپت بی معنی شود

Kurdia
چهارشنبه 17 مهر 1392, 13:18 عصر
دوست عزیز
خب با Server.HTMLDecode بازگردانی کن

sasanrstm
پنج شنبه 18 مهر 1392, 06:27 صبح
میدونی مشگل چیه کد ودرست نمی نویسی من یه لیبل دارم با یه تکست رویداد دگمه نئوشتم

Label3.Text = Server.HtmlEncode(editor.Text);

یا اینکه یه تابع تعریف کن ریپلایس کن


public string chg(string s)
{
s = s.Replace("<>", "****");
return s;

ولیدشون رو هم همونطوریکه دوستان میگن فالس کن.

sasanrstm
پنج شنبه 18 مهر 1392, 06:30 صبح
و در ادامه



labal.text=chg(editor.text)

bitcob589
پنج شنبه 18 مهر 1392, 11:27 صبح
میدونی مشگل چیه کد ودرست نمی نویسی من یه لیبل دارم با یه تکست رویداد دگمه نئوشتم

Label3.Text = Server.HtmlEncode(editor.Text);

یا اینکه یه تابع تعریف کن ریپلایس کن


public string chg(string s)
{
s = s.Replace("<>", "****");
return s;

ولیدشون رو هم همونطوریکه دوستان میگن فالس کن.
در زمانی که درون ادیتور متن (که شامل متن خالی،عکس،...) به همراه استایل هایی که به وسیله ادیتور اعمال می شود خروجی HTML هست .HTML هم که بدون >< بی معنی هست

Kurdia
پنج شنبه 18 مهر 1392, 16:58 عصر
تو دقیقا نمی دونی یا نمی تونی بگی می خوای چیکار کنی




public string _GetString(string _Str){
// ذخیره
_Str = _Str.Replace("<", "&lt");
_Str = _Str. Replace(">", "&gt");
Return _Str ;
}

_GetString(txt1.text);
// سایر کدها
---------------------------------
// بارخوانی

public string _SendString(string _Str){
// ذخیره

_Str = _Str.Replace("&lt", "<");
_Str = _Str.Replace("&gt", ">");

Return _Str ;
}

Label1.text = _SendString(DatabaseFielfd);
// سایر کدها



این رو تست کن و نتیجه رو بگو

bitcob589
پنج شنبه 18 مهر 1392, 17:47 عصر
این رو تست کن و نتیجه رو بگو
خطای پست 24نمایش داده می شود

متنی که در ادیتور نوشته می شود تگ html به طور مثال به شکل &lt ذخیره می شود چگونه در زمانی کد جاوا اسکریپت در ادیتور نوشته می شود بی اثر کنیم اثرات کدهای جاوا اسکریپت بی اثر کن
حال اگر تگ خاصی با Replace به کارکتر دیگری تبدیل کنیم نمایش می دهیم متن نا خوانا و قالب ادیتور به صورت صحیح نمایش داده نشود
در زمانی که از Server.HtmlDecode وServer.HtmlEncode استفاده می کنم خطای پست 24نمایش داده می شود
اگر نیاز است کد نوشته شده را بگذارم.

Kurdia
جمعه 19 مهر 1392, 23:16 عصر
من دارم استفاده می کنم و مشکل ندارم
توی پست های اولی گفته بودم که مشکل خودم هم هست و و الان رفع شده
کد و متن با تصویر خطا رو بذار تا ببینم چی کردی

bitcob589
شنبه 20 مهر 1392, 08:00 صبح
کد به صورت زیر است

protected void Button1_Click(object sender, EventArgs e)
{


Label1.Text = SendString(TextBox1.Text);

}
public string SendString(string Str)
{

Str = Str.Replace(@"<script>", "000 ").ToString();

return Str;

}
خطای پست 24 است

Kurdia
یک شنبه 21 مهر 1392, 01:47 صبح
اینو امتحان کن




Str = Str.Replace(@"<script", "000").ToString();


و مجددا بده




Str = Str.Replace(@"000>", "****").ToString();


در نهایت کد به این شکل می شه




protected void Button1_Click(object sender, EventArgs e)
{


Label1.Text = SendString(TextBox1.Text);

}
public string SendString(string Str)
{
Str = Str.Replace(@"<script", "000").ToString();
Str = Str.Replace(@"000>", "****").ToString();


return Str;

}





اول می آد
<script رو به
000> تبدیل می کنه
بعد باقی مانده(ضایعات) تگ های جاوا رو به **** تبدیل می کن

چون نمی تونه مستقبما
<script> رو تبدیل(ریپلیس) کنه

نتیجه رو حتما بگو

sasanrstm
یک شنبه 21 مهر 1392, 04:00 صبح
با سلام
یک تکس باکس وجود دارد که کاربر متنی را در تکس باکس تایپ می کند و متن وارد شده با دیتابیس مقایسه می گردد چگونه می توان از آسیب کدهای جاوا اسکریپت نوشته شده در تکس باکس از ایجاد از بروز خطا و ایجاد اشکال در دیتابیس جلوگیری کنیم
سلام دوست خوبم اگه دقت کرده باشی سوال شما در مورد تکست باکس بود نه ادیتور. منم به این سوالت جواب دادم .خودم کلا از ادیتور استفاده نمیکنم مگر اینکه مجبور باشم.

aroshanzamir
سه شنبه 06 خرداد 1393, 11:27 صبح
سلام دوستان

این قسمت :



private static void cleanUpAndEncodeFormFields(NameValueCollection formFieldsCollection)
{
ReadonlyProperty.SetValue(formFieldsCollection, false, null);//IsReadOnly=false


foreach (var key in formFieldsCollection.AllKeys)
{
var origData = formFieldsCollection[key];
if (string.IsNullOrEmpty(origData)) continue;
origData = origData.Trim();


//قصد تميز سازي يك سري از موارد را نداريم چون در اين حالت وب فرم‌ها از كار مي‌افتند
if (IgnoreList.Contains(key)) continue;
//در ساير موارد كاربران مجازند فقط تگ‌هاي سالم را ارسال كنند و مابقي حذف مي‌شود
var modifiedData = origData.ToSafeHtml();


if (origData != modifiedData)
{
//todo: log this attack...
formFieldsCollection[key] = modifiedData;
}
}


ReadonlyProperty.SetValue(formFieldsCollection, true, null);//IsReadOnly=true
}





تو این

var origData = formFieldsCollection[key];

قسمت داره مقدار اطلاعات ورودی را دریافت می کنه ... خطا میده
اصلا به اون قسمت که بخواهد Replace کنه نمیرسه

اصلا تو این قسمت به <b>
هم گیر میده

باید چکار کنم

Kurdia
چهارشنبه 07 خرداد 1393, 08:25 صبح
سلام دوستان

این قسمت :



private static void cleanUpAndEncodeFormFields(NameValueCollection formFieldsCollection)
{
ReadonlyProperty.SetValue(formFieldsCollection, false, null);//IsReadOnly=false


foreach (var key in formFieldsCollection.AllKeys)
{
var origData = formFieldsCollection[key];
if (string.IsNullOrEmpty(origData)) continue;
origData = origData.Trim();


//قصد تميز سازي يك سري از موارد را نداريم چون در اين حالت وب فرم‌ها از كار مي‌افتند
if (IgnoreList.Contains(key)) continue;
//در ساير موارد كاربران مجازند فقط تگ‌هاي سالم را ارسال كنند و مابقي حذف مي‌شود
var modifiedData = origData.ToSafeHtml();


if (origData != modifiedData)
{
//todo: log this attack...
formFieldsCollection[key] = modifiedData;
}
}


ReadonlyProperty.SetValue(formFieldsCollection, true, null);//IsReadOnly=true
}





تو این

var origData = formFieldsCollection[key];

قسمت داره مقدار اطلاعات ورودی را دریافت می کنه ... خطا میده
اصلا به اون قسمت که بخواهد Replace کنه نمیرسه

اصلا تو این قسمت به <b>
هم گیر میده

باید چکار کنم


این تاپیک قدیمیه
یه جدیدشو ایجاد کن
من جوابت رو نمی دونم
اما برای بهتر پاسخ گرفتن یه تاپیک جدید ایجاد کن