SSRF (подделка серверного запроса)

Принуждение сервера обращаться к внутренним адресам по URL, заданному пользователем.

СигнатураServer-Side Request Forgery

SSRF возникает, когда сервер делает HTTP-запрос по URL из пользовательского ввода. Атакующий подставляет внутренний адрес (например http://169.254.169.254/ — метаданные облака) и получает доступ к закрытым ресурсам сети.

Как защититься: проверяйте URL по белому списку доменов, запрещайте обращения к приватным и loopback-адресам, отключайте лишние схемы (file, gopher), не доверяйте редиректам.

import ipaddress, socket
from urllib.parse import urlparse

def is_safe_url(url):
    host = urlparse(url).hostname
    ip = ipaddress.ip_address(socket.gethostbyname(host))
    # Запрещаем приватные и loopback-адреса
    return not (ip.is_private or ip.is_loopback)
← Все записи: Веб-уязвимости и защита
Поддержать проект