حمله CSRF چیست؟

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

💡 به زبان ساده: مهاجم کاری می‌کند که کاربر به‌جای خودش، کار دلخواه مهاجم را انجام دهد، بدون اینکه بداند.

چگونه رخ می‌دهد؟

وب‌سایت‌ها برای شناسایی کاربر، از Session یا کوکی‌ها استفاده می‌کنند. وقتی کاربر به سایت وارد می‌شود، مرورگر به‌طور خودکار کوکی‌ها را همراه با هر درخواست می‌فرستد.

اگر کاربر در حین فعالیت در سایت امن، روی لینک یا تصویر مخرب سایت دیگری کلیک کند:

  • مرورگر درخواست را همراه با کوکی‌ها به سایت امن می‌فرستد

  • سایت فکر می‌کند این درخواست از سوی کاربر قانونی آمده و آن را اجرا می‌کند

مثال واقعی

فرض کنید کاربر "داریوش" وارد سایت بانکی خود شده و وارد حساب کاربریش است.

  • همزمان، داریوش به یک وبلاگ ناشناس می‌رود که شامل فرم مخرب است:

<img src="http://bank.com/transfer?to=evil&amount=1000">
  • مرورگر داریوش به‌طور خودکار کوکی‌های سایت bank.com را می‌فرستد.

  • سایت بانک درخواست انتقال وجه را از طرف داریوش انجام می‌دهد، بدون اینکه داریوش بفهمد!

مثال ساده (درک کودک)

تصور کن یک مغازه اسباب‌بازی آنلاین داری:

  • داریوش وارد سایت شده و سبد خریدش پر است.

  • وب‌سایت دیگری یک دکمه مخفی دارد که وقتی داریوش کلیک می‌کند، یک اسباب‌بازی از سبد او بدون اطلاع او خریده می‌شود.

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


🧑‍💻 مثال پیشرفته

فرض کن یک سرویس ایمیل شرکتی داری:

  • کاربران وارد حساب کاربری شده و Session فعال دارند

  • مهاجم یک لینک مخرب داخل ایمیل فیشینگ برای کاربر می‌فرستد

  • کاربر روی لینک کلیک می‌کند و یک درخواست ارسال ایمیل جعلی به همه همکاران ارسال می‌شود

  • ایمیل از طرف کاربر قانونی ارسال شده، بنابراین سیستم ایمیل هیچ هشداری نمی‌دهد


🧰 ابزارها و روش‌های شناسایی CSRF

  • Burp Suite: تست و شبیه‌سازی حملات CSRF

  • OWASP ZAP: تحلیل درخواست‌ها و آسیب‌پذیری‌ها

  • Postman: بررسی رفتار سرور با درخواست‌های غیرمجاز


🛡️ راه‌های جلوگیری از CSRF

✅ در سمت سرور:

  • استفاده از توکن CSRF در فرم‌ها

  • بررسی Referer و Origin header

  • اعمال روش POST برای عملیات تغییر داده

  • محدود کردن اعتبار Session و اعمال تایم‌اوت

✅ در سمت کاربر:

  • وارد نشدن همزمان به سایت‌ها در تب‌های متعدد بدون امنیت کافی

  • اجتناب از کلیک روی لینک‌ها یا باز کردن تصاویر مشکوک

  • استفاده از مرورگرهای به‌روز و افزونه‌های امنیتی


✅ جمع‌بندی

  • CSRF حمله‌ای است که باعث می‌شود کاربر به‌طور ناخواسته عملیاتی را انجام دهد

  • از مثال ساده سبد خرید تا مثال پیشرفته ایمیل شرکتی، این حمله می‌تواند خطرناک باشد

  • با توکن CSRF، بررسی هدرها و محدودیت Session می‌توان امنیت وب‌سایت‌ها را تضمین کرد