آسیب پذیری CSRF

نویسنده: محمد مهدی تاریخ : ۱۴۰۲/۰۲/۱۱

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

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

1- استفاده از توکن CSRF:

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

نمونه کد PHP برای ایجاد توکن CSRF:


<?php
session_start();
$token = bin2hex(random_bytes(32));
$_SESSION['csrf_token'] = $token;
?>


نمونه کد HTML برای ارسال توکن CSRF با درخواست:


<form method="post" action="process.php">
  <input type="hidden" name="csrf_token" value="<?php echo $_SESSION['csrf_token']; ?>" />
  <input type="submit" value="Submit" />
</form>


2- بررسی سرآیند های HTTP:

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

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


<?php
$referer = $_SERVER['HTTP_REFERER'];
if (strpos($referer, 'https://www.bluhost.dev') !== 0) {
  // Invalid Referer - do not process request
  exit();
}
?>


3- استفاده از ابزارهای امنیتی:

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

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

5- استفاده از مجوزهای CORS:

CORS (Cross-Origin Resource Sharing) یک مکانیزم امنیتی در مرورگرهای وب است که اجازه می‌دهد تا یک سایت به سایت‌های دیگر دسترسی داشته باشد. با تعیین مجوزهای CORS در سمت سرور، می‌توان به سایت‌های دیگر اجازه دسترسی به منابع سایت را بدهیم. با این روش، فقط سایت‌های مجاز به دسترسی به منابع می‌توانند درخواست‌ها را ارسال کنند و حملات CSRF کنترل می‌شوند.

نمونه کد PHP برای تعیین مجوزهای CORS:

<?php
header('Access-Control-Allow-Origin: https://www.bluhost.dev');
header('Access-Control-Allow-Methods: GET, POST, OPTIONS');
header('Access-Control-Allow-Headers: Content-Type, X-Requested-With');


// Process request

?>

نسخه تکمیلی این مقاله به زودی منتشر خواهد شد

نظرات کاربران
متن نظر :
!

لطفا قبل از ثبت نظر وارد وارد حساب کاربری خود شوید یا ثبت نام کنید

آکادمی بلوهاست ، با هدف ارائه آموزش های کاربردی به کاربران راه اندازی شده و مرتب بروزرسانی می شود

عضویت در خبرنامه

نماد های اعتماد
تمام حقوق برای بلوهاست محفوظ است