SSRF مخفف Server-Side Request Forgery است. زمانی رخ میدهد که سرور بر اساس ورودی کنترلنشده کاربر به یک نشانی شبکه درخواست ارسال کند. این میتواند منابع داخلی را در معرض دسترسی غیرمنتظره قرار دهد.
نمونه معماری دفاع
- برای دریافت تصویر یا فید خارجی، دامنههای مجاز تعیین کنید.
- پس از حل DNS و هنگام اتصال، مقصدهای خصوصی، Loopback و آدرسهای ممنوع را کنترل کنید.
- مسیر Redirect را هم اعتبارسنجی کنید.
- دسترسی شبکه سرویس را با قوانین خروجی محدود کنید.
نکته فنی
بررسی ساده پیشوند URL یا Regex بهتنهایی کافی نیست. تصمیم امنیتی باید بر اساس مقصد واقعی شبکه باشد.
اصطلاحات مرتبط: رابط برنامهنویسی کاربردی، پروتکل انتقال ابرمتن، دیوار آتش برنامه وب.
نمونه ریسک در دانلود URL
# Unsafe pattern: do not use with untrusted URL!
def fetch_preview(user_url):
return requests.get(user_url).text
برای جلوگیری از SSRF نباید URL ورودی کاربر مستقیماً به شبکه داخلی دسترسی داشته باشد. Validation مقصد، جلوگیری از Redirect خطرناک، خروجی شبکه محدود و دفاع در سطح زیرساخت هم لازماند.