برنامه نویسی

درک حملات جعل درخواست بین سایتی (CSRF): چگونه کار می کنند و چگونه از آنها جلوگیری کنیم

CSRF از اعتماد مرورگر برای ربودن اقدامات کاربر سوء استفاده می کند. یاد بگیرید که چگونه کار می کند و چگونه از برنامه های وب خود دفاع کنید

جعل درخواست های بین سایتی (CSRF) یک آسیب پذیری امنیتی وب حیاتی است که از اعتماد یک برنامه وب به یک کاربر تأیید شده سوء استفاده می کند. برخلاف سایر حملات که مستقیماً مکانیسم‌های امنیتی یک برنامه وب را هدف قرار می‌دهند، CSRF یک کاربر وارد شده را فریب می‌دهد تا به طور ناآگاهانه اقدامات ناخواسته را در وب‌سایتی که در آن احراز هویت می‌شوند، اجرا کند. این حمله به‌ویژه خطرناک است، زیرا از نحوه استفاده مرورگرها با توکن‌های احراز هویت، مانند کوکی‌ها، استفاده می‌کند و آن را برای برنامه‌های کاربردی وب که به احراز هویت مبتنی بر جلسه متکی هستند، به خطری دائمی تبدیل می‌کند.

در این مقاله، نحوه عملکرد CSRF، چرایی انحصار آن برای برنامه‌های کاربردی وب و چگونگی استفاده مهاجمان از مهندسی اجتماعی برای سوء استفاده از این آسیب‌پذیری را توضیح خواهیم داد. همچنین بحث خواهیم کرد که چرا مکانیسم‌های امنیتی مدرن، مانند سیاست‌های همان منبع (SOP) و اشتراک‌گذاری منابع متقاطع (CORS)، نقش حیاتی در کاهش این حملات دارند.

حملات CSRF چگونه کار می کنند

حملات CSRF از روشی که مرورگرها به طور خودکار اعتبارنامه‌های احراز هویت (مانند کوکی‌ها، شناسه‌های جلسه یا سرصفحه‌های احراز هویت HTTP) را در هنگام درخواست به وب‌سایتی که در آن کاربر قبلاً احراز هویت شده است، استفاده می‌کنند. هدف مهاجم فریب قربانی برای ارسال ناآگاهانه درخواست مخرب به برنامه مورد نظر است.

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

چرا CSRF فقط بر برنامه های وب تأثیر می گذارد؟

حملات CSRF منحصر به برنامه های کاربردی وب هستند زیرا به مرورگر متکی هستند که به طور خودکار اعتبار ذخیره شده را ارسال می کند. هنگامی که کاربر وارد یک وب سایت می شود، مرورگر او نشانه های احراز هویت (مانند کوکی های جلسه) را حفظ می کند. اگر همان کاربر در حالی که هنوز وارد سایت شده است از یک وب سایت مخرب بازدید کند، سایت مخرب می تواند بدون اطلاع کاربر درخواست هایی را برای سایت مورد نظر آغاز کند.

در مقابل، APIهای بدون حالت که به توکن‌های دسترسی در هدرهای HTTP نیاز دارند (مانند توکن‌های حامل در OAuth2) در برابر CSRF آسیب‌پذیر نیستند. این به این دلیل است که مرورگرها به طور خودکار سرصفحه‌های مجوز را هنگام درخواست‌های متقاطع وارد نمی‌کنند و CSRF را در برابر چنین APIهایی ناکارآمد می‌سازد.

یک مثال فرضی حمله CSRF

سناریو: یک برنامه بانکداری آنلاین

تصور کنید یک کاربر به حساب بانکی آنلاین خود وارد می شود https://bank.example.com. این برنامه از کوکی ها برای حفظ احراز هویت جلسه استفاده می کند. در حالی که کاربر وارد سیستم شده است، یک ایمیل با یک پیوند به ظاهر بی ضرر دریافت می کند:

Click here to claim your reward: 
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

از آنجایی که مرورگر هنگام بازدید به طور خودکار کوکی جلسه را شامل می شود bank.example.com، با کلیک روی پیوند، 1000 دلار به حساب مهاجم منتقل می شود بدون نیاز به احراز هویت اضافی کاربر.

CSRF با استفاده از ارسال فرم مخرب (حمله POST Request)

مهاجمان نیز می توانند اهرمی را اعمال کنند فرم های پنهان HTML برای انجام حملات CSRF سناریوی زیر را در نظر بگیرید:

قربانی از یک وب سایت مخرب حاوی HTML زیر بازدید می کند:




		

		
	

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا