EndpointGuard
in package
FinalYes
Валидация endpoint, DNS-resolve и защита от SSRF / DNS-rebinding.
Tags
Table of Contents
Methods
- __construct() : mixed
- assertAllowed() : void
- Проверяет endpoint согласно опциям безопасности (без пиннинга).
- assertConnectedPeer() : void
- Повторная проверка адреса пира после connect (анти-rebinding).
- extractHost() : string|null
- Извлекает host из endpoint (host:port, scheme://host, unix-path).
- isBlockedHost() : bool
- Проверяет, является ли host частным/зарезервированным (с DNS для имён).
- prepare() : PinnedEndpoint
- Проверяет endpoint и возвращает IP-pinned вариант для connect.
- resolvePublicIps() : array<int, string>
- Резолвит hostname и проверяет, что все адреса публичные.
Methods
__construct()
public
__construct([DnsResolverInterface $dns = new PhpDnsResolver() ]) : mixed
Parameters
- $dns : DnsResolverInterface = new PhpDnsResolver()
-
Резолвер DNS (по умолчанию системный)
assertAllowed()
Проверяет endpoint согласно опциям безопасности (без пиннинга).
public
assertAllowed(string $endpoint, ConnectionOptions $options) : void
Parameters
- $endpoint : string
- $options : ConnectionOptions
Tags
assertConnectedPeer()
Повторная проверка адреса пира после connect (анти-rebinding).
public
assertConnectedPeer(mixed $stream, ConnectionOptions $options) : void
Parameters
- $stream : mixed
-
Открытый stream resource
- $options : ConnectionOptions
Tags
extractHost()
Извлекает host из endpoint (host:port, scheme://host, unix-path).
public
extractHost(string $endpoint) : string|null
Parameters
- $endpoint : string
Return values
string|nullisBlockedHost()
Проверяет, является ли host частным/зарезервированным (с DNS для имён).
public
isBlockedHost(string $host) : bool
Parameters
- $host : string
Return values
boolprepare()
Проверяет endpoint и возвращает IP-pinned вариант для connect.
public
prepare(string $endpoint, ConnectionOptions $options) : PinnedEndpoint
Parameters
- $endpoint : string
- $options : ConnectionOptions
Tags
Return values
PinnedEndpointresolvePublicIps()
Резолвит hostname и проверяет, что все адреса публичные.
public
resolvePublicIps(string $host) : array<int, string>
Parameters
- $host : string