NovinkaZverejnili sme 50+ Laravel balíkov ako open source
Custom AI apps, agents and automation — Roundly ConsultingRoundly
Všetky balíky
Safe Fetch for Laravel

Fasáda SafeFetch

Všetko ide cez jednu fasádu, RoundlyConsulting\SafeFetch\Facades\SafeFetch (globálny alias SafeFetch), ktorá je skratkou nad singletonom SafeFetchManager, a cez makro Http::safe() na HTTP klientovi Laravelu:

use Illuminate\Support\Facades\Http;
use RoundlyConsulting\SafeFetch\Facades\SafeFetch;

Http::safe()->withToken($token)->post($url, $payload);          // guard any Laravel request
SafeFetch::guard(Http::withToken($token), $policy)->post($url);  // the same, without the macro
SafeFetch::http($policy)->get($url);                             // a new guarded request

$vetted = SafeFetch::vet($url);              // VettedDestination, or DestinationRejected / DestinationUnavailable
SafeFetch::allows($url);                     // bool — never throws a verdict
SafeFetch::precheck($url);                   // CanonicalUrl — every rule except the DNS lookup

$page = SafeFetch::fetch($url, maxBytes: 1_000_000);              // a capped GET into memory
$file = SafeFetch::download($url, $path, maxBytes: 50_000_000);   // the same GET, streamed to a file
SafeFetch::truncated($response);             // was a guarded response cut at maxResponseBytes?

SafeFetch::policy();                         // the configured DestinationPolicy, to tighten or loosen per call
SafeFetch::networks()->isPrivate('169.254.169.254');                    // true — cloud metadata
SafeFetch::urls()->canonicalise('HTTPS://Example.COM.:443/a?b#frag');   // CanonicalUrl: https://example.com/a?b

Metódy manažéra

MetódaVraciaČo robí
vet(string $url, ?DestinationPolicy $policy = null)VettedDestinationPosúdi URL adresu podľa pravidiel (predvolene nakonfigurovaných): jej prestavanú URL a každú adresu, na ktorú sa preložila. Vyhodí DestinationRejected, alebo DestinationUnavailable, ak sa hostiteľ nepreloží.
allows(string $url, ?DestinationPolicy $policy = null)boolČi pravidlá URL adresu pustia. Verdikt nikdy nevyhodí ako výnimku.
precheck(string $url, ?DestinationPolicy $policy = null)CanonicalUrlVšetky pravidlá okrem prekladu DNS — pri ukladaní a vo formulároch. Vyhodí DestinationRejected.
http(?DestinationPolicy $policy = null)PendingRequestNová chránená požiadavka z továrne HTTP klienta Laravelu — Http::safe() bez makra.
guard(PendingRequest $request, ?DestinationPolicy $policy = null)PendingRequestOchráni požiadavku, ktorú ste zostavili (Http::withToken($t)) — overenú, pripnutú a skontrolovanú pri každom kroku. To, čo volá Http::safe().
fetch(string $url, ?int $maxBytes = null, ?int $timeout = null, ?string $accept = null, array $headers = [], ?bool $followRedirects = null, ?DestinationPolicy $policy = null)FetchedResponseChránený GET do pamäte s obmedzeným telom. Vyhodí DestinationRejected, DestinationUnavailable alebo FetchFailed.
download(string $url, string $path, ?int $maxBytes = null, ?int $timeout = null, ?string $accept = null, array $headers = [], ?bool $followRedirects = null, ?DestinationPolicy $policy = null)DownloadedFileTen istý GET streamovaný do súboru na $path; adresár musí existovať.
truncated(Response|ResponseInterface $response)boolČi bola chránená odpoveď orezaná na maxResponseBytes z pravidiel. Bez stavu: číta hlavičku Safe-Fetch-Truncated.
policy()DestinationPolicyPredvolené nakonfigurované pravidlá, ktoré sprísnite alebo uvoľníte pre jedno volanie.
networks()Handles\NetworksTabuľka blokovaných sietí: isPrivate(), isBlockedHostname(), blockedRanges().
urls()Handles\UrlsParser URL adries a riešenie presmerovaní, ktoré používa ochrana: canonicalise(), resolveRedirect().
SafeFetch::fake(array $dns = [])Testing\SafeFetchFakeLen na fasáde — nahrávací fake (pozrite Testovanie).
SafeFetch::fakeDns(array $records = [])Testing\FakeHostResolverLen na fasáde — odpovedá na preklady mien z tabuľky.

Po nainštalovaní SafeFetch::fake() sa dá každé overenie fake volať aj na fasáde — pozrite Testovanie. vetHop() je na manažéri verejná, ale interná: je to volanie middleware ochrany pre každý krok, aby fake videl všetky kroky. SafeFetchManager::TRUNCATED_HEADER ('Safe-Fetch-Truncated') pomenúva hlavičku orezania.

Makro Http::safe()

PendingRequest::safe(?DestinationPolicy $policy = null): PendingRequest poskytuje Http::safe(), Http::withToken($t)->safe() aj $pool->safe(). Ak by iný balík zaregistroval makro safe po tomto, potichu by ho nahradil, preto bezpečnostne kritický kód volá SafeFetch::guard() alebo SafeFetch::http().

Dátové objekty

V RoundlyConsulting\SafeFetch\DataTransferObjects, všetky final readonly:

TriedaPolia a metódy
DestinationPolicyPravidlá nad tabuľkou blokovaných sietí — pozrite Pravidlá cieľov.
RedirectPolicyenabled, max, statuses, allowDowngrade, forwardHeaders, statusesGiven; none(), methodPreserving(), enabled(), withStatuses(), forwardHeaders(), allowingDowngrade(), max(), follows().
CanonicalUrlscheme, host, port, ipLiteral, pathAndQuery; toString(), origin().
VettedDestinationurl (prestavaná), scheme, host, port, ipLiteral, addresses (každá overená adresa); origin(), resolveEntry(): ?string, pinningOptions(): array (bez curl cannot_pin), connectsTo(string $address): bool.
FetchOptionsmaxBytes, timeout, accept, headers, followRedirects — null znamená nakonfigurovanú predvolenú hodnotu.
FetchedResponsestatus, body, contentType, url, headers; header(string $name): ?string, json(?string $key = null, mixed $default = null): mixed.
DownloadedFilestatus, path, bytes, contentType, url, headers; header(string $name): ?string.

Ďalšie verejné typy: Enums\Reason a výnimky (Verdikty a výnimky), Contracts\HostResolver a Support\SystemHostResolver, Support\PrivateNetworks (URL adresy a blokované siete), Rules\SafeUrl, Commands\CheckCommand, Events\DestinationRefused a Testing\SafeFetchFake, Testing\FakeHostResolver a Testing\RecordedVet. Všetko ostatné v Support\ a Http\ je interné.

Prejavte lásku k open source

Tento balík je zadarmo pod licenciou MIT. Ak vám šetrí čas, jednorazový príspevok alebo členstvo na Patreone nám pomôže ho ďalej udržiavať, testovať a dokumentovať.

Ďalšie spôsoby podpory vrátane kryptomien

Odoslaním daru súhlasíte s našimi podmienkami prijímania darov.

Chcete to zabudovať do svojho produktu?

Naše balíky integrujeme do zákazkových Laravel a AI riešení. Napíšte nám, na čom pracujete, a ozveme sa do 48 hodín.