CSRF چیست؟ راهنمای کامل حمله Cross-Site Request Forgery و روش‌های جلوگیری

CSRF چیست؟ راهنمای کامل حمله Cross-Site Request Forgery و روش‌های جلوگیری


Cross-Site Request Forgery (CSRF) یک آسیب‌پذیری وب است که مهاجم را قادر می‌سازد کاربرِ احراز هویت‌شده را فریب دهد تا عملی را بدون قصد کاربر انجام دهد. این حملات معمولاً برای تغییر وضعیت (مانند انتقال پول، تغییر ایمیل یا رمزعبور) استفاده می‌شوند و در صورت هدف‌گیری حساب‌های مدیریتی می‌توانند منجر به تسلط کامل بر برنامه شوند. در این مقاله به تعریفCSRF، سازوکار حمله، تأثیرات، راهکارهای دفاعی (از جمله پیاده‌سازی توکن‌ها و سیاست‌های SameSite) و در انتها یک بخش تکمیلی درباره‌ی SSRF (Server-Side Request Forgery) می‌پردازیم. 

آنچه در ادامه می‌خوانید:

چرا CSRF یک تهدید مهم در امنیت سایبری است؟

حمله CSRF چیست و چگونه امنیت سازمان‌ها را تهدید می‌کند؟ 

ویژگی‌های کلیدی حمله CSRF

CSRF چگونه کار می‌کند؟ 

پیامدها و تأثیرات CSRF بر حفاظت اطلاعات

روش‌های متداول مقابله با CSRF

بهترین شیوه‌های توسعه امن برای پیشگیری از CSRF

تشخیص و تست (نکات برای تیم‌های امنیتی)

SSRF چیست و چه تفاوتی با CSRF دارد؟

نمونه خطرات SSRF 

راهکارهای مقابله با SSRF 

چک‌لیست نهایی برای بهبود حفاظت اطلاعات و امنیت سایبری

کلام آخر

سوالات متداول

 

چرا CSRF یک تهدید مهم در امنیت سایبری است؟

در دنیای وب‌محور امروز، حفاظت اطلاعات و امنیت سایبری به اندازه‌ی طراحی و توسعه‌ی صحیح نرم‌افزار اهمیت دارد. بسیاری از برنامه‌ها برای شناسایی کاربر به کوکی‌های نشست (session cookies) تکیه می‌کنند؛ همین اعتمادِ خودکار مرورگر به کوکی‌ها است که CSRF را ممکن می‌سازد. یک حمله موفق می‌تواند نه تنها حریم خصوصی کاربران را نقض کند، بلکه به از بین رفتن داده‌ها، اختلال سرویس و حتی تصاحب کامل برنامه منجر شود  به‌ویژه زمانی که حساب‌های مدیریتی هدف قرار گیرند.

با افزایش استفاده از سرویس‌های آنلاین، بانکداری دیجیتال و سامانه‌های سازمانی، حملات CSRF به یکی از نگرانی‌های اصلی متخصصان امنیت سایبری تبدیل شده است. بسیاری از حملات موفق به دلیل نبود مکانیزم‌های حفاظتی مناسب مانند CSRF Token یا تنظیمات امنیتی مرورگر رخ می‌دهند. بنابراین، پیاده‌سازی کنترل‌های امنیتی مناسب برای جلوگیری از این نوع حملات برای هر سازمان ضروری است.

 

حمله CSRF چیست و چگونه امنیت سازمان‌ها را تهدید می‌کند؟ 

Cross-Site Request Forgery (CSRF) نوعی آسیب‌پذیری وب است که مهاجم با فریب کاربرِ احراز هویت‌شده، باعث می‌شود مرورگر آن کاربر درخواست‌هایی را به سرورِ هدف ارسال کند. از آنجا که مرورگر به‌صورت خودکار کوکی‌های مرتبط را می‌فرستد، سرور اغلب این درخواست‌ها را معتبر تلقی می‌کند.

در حوزه تست نفوذ و امنیت برنامه‌های کاربردی وب، CSRF به‌عنوان یکی از آسیب‌پذیری‌های مهم در استانداردهای امنیتی شناخته می‌شود. این حمله معمولاً در ارزیابی‌های امنیتی برنامه‌های تحت وب بررسی شده و عدم وجود مکانیزم‌های محافظتی می‌تواند نشان‌دهنده ضعف در طراحی امنیتی سیستم باشد.

 

ویژگی‌های کلیدی حمله CSRF

  • هدف‌گیری عملیات‌: تغییر وضعیت (state-changing operations) مانند ویرایش حساب یا تراکنش‌های مالی.
  • نیازی به بازگشت داده به مهاجم نیست حمله کور یا blind است.
  • معمولاً از طریق لینک‌ها، تصاویر، یا فرم‌های تعبیه‌شده در صفحات مخرب انجام می‌شود.

 

CSRF چگونه کار می‌کند؟ 

یک سناریوی عمومی CSRF شامل مراحل زیر است:

۱. وجود یک عمل حساس در برنامه (مثلاً تغییر ایمیل یا انتقال وجه).
۲. کاربر به‌صورت قانونی قبلأ وارد سایت هدف شده و کوکی نشست فعال دارد.
۳. مهاجم صفحه یا ایمیلی حاوی عنصری که درخواست حساسی ایجاد می‌کند مثلاً لینک یا تصویر با  URL خاص آماده می‌کند.
۴. کاربر آن صفحه را باز یا روی لینک کلیک می‌کند؛ مرورگر او به‌طور خودکار کوکی را همراه درخواست می‌فرستد و سرور درخواست را معتبر می‌شمارد.

نکته مهم: CSRF به‌طور کلاسیک زمانی رخ می‌دهد که سرور تنها به کوکی‌ها تکیه دارد و پارامترهای غیرقابل‌پیش‌بینی (مثل توکن‌های اختصاصی) در درخواست وجود ندارد.

 

پیامدها و تأثیرات CSRF بر حفاظت اطلاعات

پیامدهای یک حمله موفق ممکن است شامل موارد زیر باشد:

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

بدون تدابیر مناسب، CSRF می‌تواند به‌سرعت به یک بحران امنیتی منجر شود که شهرت و عملکرد سازمان را متضرر می‌کند.

برای محافظت از برنامه‌های وب در برابر حملات CSRF، می‌توان از راهکارهای امنیتی مختلفی استفاده کرد:

  • استفاده از CSRF Token: تولید توکن‌های تصادفی و غیرقابل پیش‌بینی برای هر درخواست حساس.
  • استفاده از SameSite Cookies: جلوگیری از ارسال کوکی‌ها در درخواست‌های بین‌سایتی.
  • اعتبارسنجی هدر Referer یا Origin: بررسی منبع درخواست.
  • استفاده از احراز هویت چندمرحله‌ای برای عملیات حساس.
  • پیاده‌سازی سیاست‌های امنیتی سمت سرور.

ترکیب این روش‌ها می‌تواند احتمال موفقیت حملات CSRF را به‌طور قابل توجهی کاهش دهد.

 

روش‌های متداول مقابله با CSRF

الگوی توکن همگام‌ساز (Synchronizer token pattern):

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

نقطه‌ ضعف این روش کاهش خطر (mitigation) این است که بار بیشتری بر سمت سرور برای بررسی اعتبار توکن‌ها در هر درخواست وارد می‌کند. همچنین ممکن است در شرایطی مانند باز بودن چندین پنجره مرورگر توسط کاربر یا موقعیت‌هایی که نرم‌افزارهای مختلف درخواست را ارسال می‌کنند، مشکلاتی ایجاد شود. با گسترش محدوده توکن به‌صورت «برای هر نشست» (session) به‌جای «برای هر درخواست»، می‌توان از برخی از این مشکلات جلوگیری کرد.
 

توکن کوکی به هدر (Cookie-to-header token):

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


بهترین شیوه‌های توسعه امن برای پیشگیری از CSRF

همیشه برای عملیات تغییر وضعیت، توکن ضدCSRF  ضروری است. از روش‌های authentication مبتنی بر توکن مثل JWT در هدر (Authorization) همراه با ورود امن استفاده کنید؛ توکن‌ها در هدر ارسال شوند نه در کوکی به‌صورت خودکار.

  • تنظیم مناسب SameSite و سایر پرچم‌های امنیتی کوکی (HttpOnly, Secure) را فراموش نکنید.
  • عملیات حساس را به روش double-confirm (مثلاً تایید رمزعبور/کد) محدود کنید.
  • برای APIها از CORS و سیاست‌های دقیق برای کنترل منابع متقابل استفاده کنید.
  • آموزش توسعه‌دهندگان درباره‌ی حملات CSRF و بررسی کدها در چرخه‌ی CI/CD 

 

تشخیص و تست (نکات برای تیم‌های امنیتی)

  • بررسی کنید کدام مسیرها عملیات تغییر وضعیت انجام می‌دهند.
  • مطمئن شوید که هر فرم یا endpoint حساس دارای مکانیزم توکن یا مکانیزم ایمن دیگر است.
  • تست‌های خودکار و اسکنرها می‌توانند کمک کنند اما نباید تنها منبع اعتماد باشند.

توجه امنیتی: انتشار روش‌های دقیق و گام‌به‌گام ساخت PoC برای حمله می‌تواند سوءاستفاده شود؛ بنابراین تمرکز تیم‌های امنیتی باید روی تست کنترل‌شده و اخلاقی در محیط‌های امن (lab) و با هدف اصلاح باشد.

 

SSRF چیست و چه تفاوتی با CSRF دارد؟

Server-Side Request Forgery (SSRF) زمانی رخ می‌دهد که یک مهاجم باعث می‌شود سرورِ آسیب‌پذیر، درخواست‌هایی را به منابع داخلی یا خارجی ارسال کند که مهاجم مشخص می‌کند. برخلاف CSRF که مرورگر کاربر را فریب می‌دهد، SSRF سرور را وادار به عمل می‌کند و می‌تواند نتیجه‌هایی بسیار خطرناک داشته باشد. دسترسی به سرویس‌های داخلی مانند metadata سرویس در پلتفرم‌های ابری، افشای اطلاعات حساس، یا نفوذ به شبکه داخلی.
 

نمونه خطرات SSRF 

  • خواندن metadata سرویس ابری مثل AWS EC2 metadata و استخراج کلیدهای دسترسی.
  • دسترسی به سرویس‌های داخلی که فقط از شبکه داخلی قابل‌دسترسی‌اند.
  • استفاده از سرور به‌عنوان پروکسی برای عبور از فایروال و انجام حملات دیگر.

 

راهکارهای مقابله با SSRF 

۱. ورودی‌ها را اعتبارسنجی و محدود کنید: فقط URLها/دامنه‌هایی که اجازه دارند را به‌صورت allowlist  بپذیرید.

۲. محدود کردن دسترسی شبکه‌ای (Egress Filtering): اجازه ندهید سرور به هر مقصدی خارج از محدوده‌ی مجاز وصل شود.

۳. مسدودسازی دسترسی به آدرس‌های محلی و metadata: درخواست‌هایی به 127.0.0.1، 169.254.169.254 و رنج‌های داخلی را بلوکه کنید مگر در موارد کاملاً کنترل‌شده.

۴. عدم دنبال‌کردن redirectهای ناامن: از follow-redirect خودکار جلوگیری کنید یا آن را با احتیاط مدیریت کنید.

۵. استفاده از کتابخانه‌های HTTP امن و timeout: محدود کردن زمان و اندازه پاسخ تا سرور در دام درخواست‌های طولانی نرود.

۶. ثبت و مانیتورینگ: لاگ‌گیری از درخواست‌های خروجی برای تشخیص الگوهای مشکوک.

 

چک‌لیست نهایی برای بهبود حفاظت اطلاعات و امنیت سایبری

  • تمام عملیات تغییر وضعیت دارای مکانیزم ضد CSRF هستند.
  • کوکی‌ها با HttpOnly ،Secure و SameSite مناسب تنظیم شده‌اند.
  • APIها از هدر Authorization و سیاست‌های CORS استفاده می‌کنند.
  • دسترسی‌های خروجی سرور (egress) برای جلوگیری از SSRF محدود و کنترل‌شده است.
  • تست نفوذ و اسکن‌های دوره‌ای برای شناسایی CSRF/SSRF انجام می‌شود.
  • توسعه‌دهندگان آموزش‌دیده و کدها در CI توسط اسکنرهای امنیتی بررسی می‌شوند.
  • از WAF و قوانین امنیتی برای لایه‌بندی دفاع استفاده کنید.

 

کلام آخر

CSRF و SSRF دو نمونه از آسیب‌پذیری‌های وب هستند که می‌توانند به‌طور مستقیم حفاظت اطلاعات و امنیت سایبری سازمان را تهدید کنند. اما با پیاده‌سازی روش‌های پایه‌ای و صنعتی مانند توکن‌های ضد CSRF، تنظیمات کوکی امن، محدودیت‌های خروجی شبکه و ارزیابی ورودی‌ها می‌توان ریسک‌های مرتبط را به‌طور مؤثری کاهش داد. امنیت واقعی از توسعه‌ی امن، پیکربندی صحیح و نظارت مستمر حاصل می‌شود.

 

سوالات متداول

۱. حمله CSRF چیست؟

CSRF یا Cross-Site Request Forgery نوعی آسیب‌پذیری وب است که در آن مهاجم کاربرِ احراز هویت‌شده را فریب می‌دهد تا بدون اطلاع خود، درخواست مخربی را به یک وب‌سایت ارسال کند.

 

۲. حمله CSRF چگونه کار می‌کند؟

در این حمله، کاربر قبلاً در سایت هدف وارد شده و کوکی نشست فعال دارد. مهاجم لینکی یا المانی مخرب ایجاد می‌کند که با کلیک کاربر، مرورگر به‌صورت خودکار کوکی را همراه درخواست ارسال می‌کند و سرور آن را معتبر تلقی می‌کند.

 

۳. مهم‌ترین پیش‌نیاز موفقیت حمله CSRF چیست؟

اتکای سرور به کوکی‌های نشست بدون استفاده از مکانیزم‌های محافظتی مانند CSRF Token یا پارامترهای غیرقابل پیش‌بینی.

 

۴. SameSite Cookie چه نقشی در جلوگیری از CSRF دارد؟

ویژگی SameSite در کوکی‌ها مانع ارسال خودکار کوکی‌ها در درخواست‌های بین‌سایتی می‌شود و احتمال موفقیت حملات CSRF را کاهش می‌دهد.

 

۵. SSRF چیست؟

SSRF یا Server-Side Request Forgery نوعی آسیب‌پذیری است که در آن مهاجم سرور آسیب‌پذیر را مجبور می‌کند به منابع داخلی یا خارجی درخواست ارسال کند.

تاریخ انتشار: 1404/12/04
تاریخ بروزرسانی: 1404/12/06
user avatar
نویسنده: زینب ابراهیم‌پور کارشناس بازاریابی دیجیتال
زینب ابراهیم‌پور در سال 1403 در مقطع دکتری رشته ارتباطات از دانشگاه شانگهای فارغ التحصیل شد. در طول تحصیل با شرکت‌های بین المللی در زمینه دیجیتال مارکتینگ همکاری داشته و از سال 1400 به طور ثابت تخصص حرفه‌ای خود را با شرکت‌های بزرگ ایرانی شروع کرده است. ایشان در سال 1404 به مجموعه سایبرنو پیوست.
برچسب‌های مرتبط
این مطلب را با دوستان خود به اشتراک بگذارید
نظرات کاربران

برای دریافت خبرنامه و اخبار

آدرس پست الکترونیکی خود را وارد کنید

تمامی حقوق مادی و معنوی این سایت متعلق به شرکت مهندسی دنیای فناوری امن ویرا (سایبرنو) می‌باشد.