PDA

View Full Version : حرفه ای: چه پیشنهادهایی برای جلوگیری از حملات Script Injection دارید



Mohammadvb6
دوشنبه 19 تیر 1391, 16:44 عصر
می دانیم که :

Texbox ها به طور عادی tag و script قبول نمی کند . زیرا .net مکانیزمی دارد به نام

Request Validation که جلوی ورود هر گونه tag و script را می گیرد. حال اگر بخواهیم این

مکانیزم را از کار بندازیم وارد web.config می شویم :




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



در این صورت هکرها می توانند به سایت شما حمله های Script Injection انجام دهند برای

جلوگیر از این حمله ها چه راه کارهای وجود دارد ؟

TeacherMath
دوشنبه 19 تیر 1391, 16:49 عصر
http://msdn.microsoft.com/en-us/library/ff647397.aspx

Iman.Aali
دوشنبه 19 تیر 1391, 20:58 عصر
با سلام
هنگام طراحی سایت تو مواقعی که لازمه اطلاعاتی رو از کاربر دریافت کنید باید از کنترلهای سمت سرور استفاده کرد چون اونا قابلیت Error Handling دارن و از وارد کردن Malicious Codeها به طور خودکار جلوگیری میکنند، حالا اگه بنا به دلایلی مجبور بودید ValidateRequest اونا رو False کنین (به همون شیوه ای که خودتون انجام دادین) تا کاربر بتونه تو جاهایی که لازمه تگ وارد کند بهترین کار اینه که از لایبرری Anti Cross Site Scripting (http://www.microsoft.com/en-us/download/details.aspx?id=28589) خود مایکروسافت استفاده کنید. تو همون لینک در مورد نحوه استفاده از این لایبرری توضیحات لازم رو داده. با اینحال اگه مشکلی داشتین در خدمتتم.
موفق باشید

sara_aryanfar
سه شنبه 20 تیر 1391, 10:19 صبح
علاوه بر اینها شما باید در هنگام درج داده در دیتابیس هم به صورت پارامتریک عمل کنید کلا اگر بتونید با موفقیت تمام داده هایی رو که کاربر وارد می کنه فیلتر کنید مانع این عمل میشید

ahmad156
سه شنبه 20 تیر 1391, 10:35 صبح
دوست عزیز فکر کنم کمکتون کنه
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

Mohammadvb6
سه شنبه 20 تیر 1391, 10:38 صبح
منظورتون از فیلتر کردن داده ها چیه ؟ اگه میشه بیشتر توضیح بدین .

sara_aryanfar
سه شنبه 20 تیر 1391, 11:18 صبح
خب ببینید مثال ساده ای می زنم '1==1' (امید وارم درست نوشته باشم)این وقتی به دیتا بیس برسه مورد پردازش قرار می گیره و جواب رو هم می دونین این یک عبارت همیشه درست هست ما نباید به کاربر اجازه بدیم چنین عباراتی رو به دیتا بیس ما ارسال کنه

Mohammadvb6
سه شنبه 20 تیر 1391, 11:23 صبح
نتیجه گیری : برای جلوگیری از این حملات باید از کتابخانه AntiXSS مایکروسافت استفاده کنیم

روش اول : نرم افزار Microsoft Anti-Cross Site Scripting Library V3.1 را دانلود و نصب کنید واز طریق references به آدرس برنامه نصب شده می رویم و Namespace مورد نظر(Microsoft.Security.Application) را import می کنیم و به

شکل زیر از آن استفاده می کنیم :


using Microsoft.Security.Application;
lblOutput.Text = AntiXss.GetSafeHtml(txtComment.Text);


روش دوم : توسط آقای وحید نصیری در لینک آقای ahmad156 (در این روش نیز از کتابخانه AntiXSS مایکروسافت استفاده می کنیم )

IFA_USER
سه شنبه 16 آبان 1391, 16:34 عصر
کتابخانه AntiXss رو کسی داره . هر جا تو وب گشتم به مایکروسافت آدرس داده بودن که اونجاهم ارور 404 است. هر چی نسخه به روز تر باشه بهتر

nafarinesh
سه شنبه 16 آبان 1391, 17:58 عصر
من دارم ولی راستشو بخواین اولین بار می خام فایل بزارم اینجا نمی دونم چی کار کنم.
راهنمایی کنیند تا بزارم

hamed II
سه شنبه 16 آبان 1391, 19:05 عصر
خب ببینید مثال ساده ای می زنم '1==1' (امید وارم درست نوشته باشم)این وقتی به دیتا بیس برسه مورد پردازش قرار می گیره و جواب رو هم می دونین این یک عبارت همیشه درست هست ما نباید به کاربر اجازه بدیم چنین عباراتی رو به دیتا بیس ما ارسال کنه

بلد نیستی توضیح بدی دیگه !


منظورتون از فیلتر کردن داده ها چیه ؟ اگه میشه بیشتر توضیح بدین .

ایشون منظورشون اینه :

مثلاً به جای این که از این روش برای Insert کردن استفاده کنید :


insert into test (Name) values ('" + textBox1.Text + "')

از پارامترها به این صورت استفاده بشه :



insert into tbtest (Name) values (@name)
Parameters.Add("name", OleDbType.VarChar).Value = textBox1.Text;

اینجوری حفره امنیتی sql injection بسته میشه

nafarinesh
سه شنبه 16 آبان 1391, 19:39 عصر
این چیزی که میخواستید

مرتضی تقدمی
سه شنبه 16 آبان 1391, 22:44 عصر
سلام

روش های زیر پیشنهاد میشه:
- استفاده از SP
- استفاده از Blacklist
- Escape کردن ورودی ها
- کد کردن اطلاعات ورودی
- غیر فعال کردن گزارش های خطا (توسط فایل web.config)
توضیحات بیشتر خواستید بفرمائید.

موفق باشید

saeed_sho
چهارشنبه 17 آبان 1391, 18:50 عصر
- استفاده از Blacklist
دوست عزیز لطفا یه توضیح مختصر بدید

مرتضی تقدمی
چهارشنبه 17 آبان 1391, 22:45 عصر
دوست عزیز لطفا یه توضیح مختصر بدید
در این روش شما لیست و آرایه ای از کاراکترها و عبارات مشکوکی که باعث نفوذ یا خرابی تو سیستم میشه رو ایجاد میکنی. بعد همه ورودی های کاربر رو با مقادیر این لیست چک می کنی که اگه وجود داشت, مانع ادامه عملیات بشی. بعضی از این کاراکترها:


--
fetch
;
delete
kill
union
'
"
char

و غیره و ذالک.
موفق باشید