HttpClientFactory
in package
FinalYes
埋め込み取得で使う HTTP クライアントを組み立てる。
埋め込みは「編集者が入力した任意の URL」を取りに行くため、内部ネットワークを覗かれない よう SSRF ガードを必ず通す。プロバイダーごとにクライアントを組み立てると、そのうち ガードを外した実装が混ざるので、生成をここ 1 箇所に集約する。
Table of Contents
Constants
- CONNECT_TIMEOUT = 5
- 接続の待ち時間(秒)
- TIMEOUT = 10
- 取得全体の待ち時間(秒)
Methods
- create() : ClientInterface
- SSRF ガードを挟んだ PSR-18 クライアントを生成する
Constants
CONNECT_TIMEOUT
接続の待ち時間(秒)
public
mixed
CONNECT_TIMEOUT
= 5
TIMEOUT
取得全体の待ち時間(秒)
public
mixed
TIMEOUT
= 10
Methods
create()
SSRF ガードを挟んだ PSR-18 クライアントを生成する
public
static create() : ClientInterface
Why not: embed/embed 同梱の CurlClient を使わないのは、CURLOPT_RESOLVE を渡す口が無く、 SsrfGuardedClient が検証した IP と実接続の IP を一致させられない(DNS リバインディングに よる TOCTOU が残る)ため。自動追従はホップ毎に検証する SsrfGuardedClient が担うので、 CurlHttpClient 側は常に追従しない。