Server Side Request Forgery

از Secure Coding

نسخهٔ تاریخ ‏۲۳ مارس ۲۰۲۳، ساعت ۱۴:۳۱ توسط Admin (بحث | مشارکت‌ها)
(تفاوت) → نسخهٔ قدیمی‌تر | نمایش نسخهٔ فعلی (تفاوت) | نسخهٔ جدیدتر ← (تفاوت)

آسیب پذیری جعل درخواست در سمت سرور یا Server Side Request Forgery، به جعل درخواست های ارسالی از سمت اپلیکیشن به منابع در سمت سرور گویند که به واسطه آن مهاجم امکان دسترسی به سایر منابع اپلیکیشن را دارد.

برای مثال مهاجم درخواست دسترسی به سرور داخلی از سازمان با استفاده از آسیب پذیری موجود در اپلیکیشن و جعل درخواست های سمت سرور را دارد.

نمونه کد آسیب پذیر

$url = $_GET['url'];
$data = file_get_contents($url);
echo $data;


روش های جلوگیری

۱) سیاست white-list

PHP

$allowed_domains = array("example.com", "example.org");
$url = $_GET['url'];
if (in_array(parse_url($url, PHP_URL_HOST), $allowed_domains)) {
    $data = file_get_contents($url);
    echo $data;
} else {
    echo "Invalid URL";
}


۲) صحت سنجی ورودی

PHP

$url = $_GET['url'];
if (filter_var($url, FILTER_VALIDATE_URL)) {
    $data = file_get_contents($url);
    echo $data;
} else {
    echo "Invalid URL";
}