مرا اسکن کن!

CSRF و XSS

CSRF و XSS



در دنیای امنیت سیستم های نرم افزاری، مباحث پیچیده و شیرینی وجود داره که باعث میشه هر از گاهی، یه خورده مطالعه در این زمینه داشته باشم. توی ادامه به توضیح دو حمله XSS و CSRF می پردازم.

برخی از مهمترین موارد آسیب پذیری نرم افزارهای تحت وب عبارتند از:

XSS و CSRF.

XSS که نام کاملش Cross Site Scripting (به دلیل اینکه مخففCSS با Cascading Style Sheets که مربوط به طراحی وب هست اشتباه نشه از X بجای C در مخفف آن استفاده شده) ، حمله ای است که از طریق اعتماد یک کاربر به یک سایت نشئت میگیره.

CSRF که نام کاملش Cross Site Request Forgery است، از طریق اعتماد یک سایت به یک کاربر نشئت میگیره.

 

XSS

در حملات XSS ، کوکی مرورگر قربانی به سرقت میره. این کوکی حاوی اطلاعات مختلفی مثل اطلاعات لاگین، ورود به سایت بانک و یا غیره میتونه باشه.که در ادامه توضیح میدم که چطور این کار انجام میشه.

کلا راه های مورد استفاده هکر برای حمله XSS معمولا دو راه است. یکی ارسال لینک به قربانی (از طریق ایمیل و....) و دیگری اجرای کدمخرب با استفاده از سایتی که کاربر از اون بازدید میکنه.

فرض کنید هکر، در قسمت نظرسنجی یک سایت، کد زیر رو وارد کنه و سایت بدون بررسی و فیلتر کردن متن های درج شده، این متن رو در خروجی سایت خودش بزنه. 

حالا در صورتی که کاربر این صفحه وب را مشاهده کند، هکر، کوکی کاربر را سرقت می کند.

راه جلوگیری از این نوع هک اینه که سایتها، ورودی های کاربر رو با ابزارهای مختلفی که دارند (مانند regular expressionها و..) چک کنند و مطمئن بشن که کاربران کدمخرب وارد نمیکنند.یا اینکه از ابزارهای زبان برنامه نویسی استفاده کنند. مثلا در php توابع htmlentities,htmlspecialchars  و strip_tags برای این کار در نظر گرفته شده اند. که مثال زیر استفاده htmlentities را نشان می دهد.

 

CSRF

فرض کنید سایتی به اسم sms.com داریم که داخل این سایت ، پس از اینکه کاربر لاگین کرد، برای ارسال پیامک به صفحه sms.com/send.php  میرود.
فرض کنید که ساختار صفحه ارسال پیامک به صورت زیر باشد:

اگر صفحه do_send.php درخواست 
Sms.com/do_send.php?number=09360123456&message=hello  
را بپذیرد، می توان از این سایت با استفاده از csrf سوء استفاده کرد.معمولا این گونه حملات با فریب کاربر برای دیدن یک تصویر انجام می پذیرد. به تگ زیر دقت کنید:

کاربر با کلیک برای دیدن تصویر، ناخودآگاه درخواست ارسال پیامک را ارسال کرده است.روشهای زیادی برای حملات csrf وجود دارد اما معمول ترین روش استفاده از تصاویر است. این لینک و تصویر میتواند توسط ایمیل ارسال شده باشد یا همان روش قبل در یک سایت که داده های وارد شده توسط کاربران را چک نمیکند، در خروجی سایت قرار گرفته باشد.

برای جلوگیری از حملات CSRF معمولا این چهار روش پیشنهاد میشود:

1-در فرم های خود بجای متد GET از متد POST استفاده کنید

2-بجای تکیه بر Register_global از $_POST استفاده کنید

3-کاربران را مجبور به استفاده از فرم های خود کنید. این کار با استفاده از captcha قابل انجام است.

4-برای اعمال حساس verification را دوباره انجام دهید.

5-تولید و ارسال TOKEN یکتا در زمان ارسال فرم و بررسی توکن برای تابع فرم(روش استفاده شده در فریم ورک لاراول LARAVEL )

 

یک مثال واقعی :

در سال 2006 آقای شیفلت متوجه یک نقص امنیتی در سایت آمازون شد.
ایشان این مسئله را به مسئولان اطلاع دادند.جزئیات این نقص امنیتی در سال 2007 منتشر شد و در اختیار همگان قرار گرفت .شما می توانید این جزئیات را در آدرس زیر مشاهده کنید:

http://shiflett.org/blog/2007/mar/my-amazon-anniversary


نوشته شده توسط :

وحید صمدیان وحید صمدیان



چهارشنبه, 28 مهر 1395

تعداد بازديد : 761

برچسب ها : بهترین طراحی سایت

3.0 ستاره