SsrfGuard
in package
Защита от подделки запросов на стороне сервера (SSRF).
Проверяет схему URI по списку разрешённых и — если обращения во внутреннюю
сеть не разрешены — блокирует хосты, разрешающиеся в приватные или
зарезервированные адреса (localhost, 10/8, 192.168/16, link-local и т. п.).
Проверка выполняется отдельно на каждом хопе перенаправления.
Функция gethostbynamel вызывается без указания пространства имён, что
позволяет подменять разрешение имён в тестах.
Table of Contents
Methods
- __construct() : mixed
- allowedSchemes() : array<int, string>
- Список разрешённых схем.
- assertAllowed() : array<int, string>|null
- Проверить, допустим ли URI, и вернуть проверенные адреса.
Methods
__construct()
public
__construct([array<int, string> $allowedSchemes = ['http', 'https'] ]) : mixed
Parameters
- $allowedSchemes : array<int, string> = ['http', 'https']
-
разрешённые схемы (по умолчанию
http,https)
allowedSchemes()
Список разрешённых схем.
public
allowedSchemes() : array<int, string>
Return values
array<int, string> —схемы в нижнем регистре
assertAllowed()
Проверить, допустим ли URI, и вернуть проверенные адреса.
public
assertAllowed(Uri $uri, bool $allowPrivateNetwork) : array<int, string>|null
Для доменного имени возвращает разрешённые и проверенные IP-адреса — их
следует зафиксировать в соединении (CURLOPT_RESOLVE), чтобы cURL не
разрешал имя повторно и подключался ровно к проверенному адресу (это
закрывает окно подмены DNS между проверкой и подключением). Для IP-литерала
и при разрешённой приватной сети возвращает null — фиксировать нечего.
Parameters
- $uri : Uri
-
проверяемый адрес
- $allowPrivateNetwork : bool
-
разрешены ли приватные адреса
Tags
Return values
array<int, string>|null —проверенные IP для фиксации или null