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

Open source

Safe Fetch for Laravel

Inštalácia
composer require roundly-consulting/safe-fetch-for-laravel
Vyžaduje: PHP ^8.4 · Laravel ^13.0

Prehľad

Ochrana pred SSRF pre HTTP klienta Laravelu. Posielajte zo servera požiadavky na URL adresy, ktoré nemáte pod kontrolou — ciele webhookov, náhľady odkazov, URL avatarov, feedov a importov — bez toho, aby sa dostali do vašej vlastnej siete. Každá URL adresa sa prísne naparsuje a prestavia, každá adresa, na ktorú sa hostiteľ preloží, musí byť verejná a spojenie sa pripne presne na tieto adresy, vrátane presmerovaní. Licencia MIT, bez databázy, postavené len na HTTP klientovi Laravelu a balíkoch Roundly enums a package-toolkit.

Čo získate

Jedno volanie na akejkoľvek požiadavke

Http::safe() chráni HTTP volania Laravelu, ktoré už píšete — tokeny, opakovania, pooly a ďalší middleware fungujú ďalej. SafeFetch::guard() a http() robia to isté bez makra.

Interné ciele sa odmietnu

Privátne, loopback, link-local, carrier-grade NAT a cloudové metadátové adresy — AWS, Google Cloud, Azure, Alibaba, Oracle, OpenStack — v každom zápise: číselné tvary, IPv4 vnútri IPv6, mená smerujúce dovnútra.

Pripnuté DNS, overené spojenie

Meno sa preloží raz, posúdi sa každá adresa, curl sa pripne presne na ne bez proxy a bez opätovne použitého spojenia a pripojená adresa sa overí pred odoslaním prvého bajtu aj po ňom.

Presmerovania pod kontrolou

Predvolene vypnuté. Po zapnutí sa každý krok znovu overí a pripne, platí limit krokov, žiadny prechod z https na http, prihlasovacie údaje zostanú pri prvom origine a ďalej idú len hlavičky, ktoré určíte.

Obmedzené fetch a download

fetch() načíta GET do pamäte, download() ho streamuje do súboru, ktorý sa nahradí až po úspechu — oba s limitom bajtov počítaným po dekódovaní, jedným časovým rozpočtom a chybami, ktoré povedia, či pomôže opakovanie.

Validácia, udalosti a kontrola prostredia

Pravidlo SafeUrl a safe_url s jednou neutrálnou správou, udalosť DestinationRefused pri každom odmietnutí a safe-fetch:check pre verdikt URL adresy alebo kontrolu prostredia, ako text alebo JSON.

Fasáda, DI alebo akcie

Jedna fasáda SafeFetch, injektovateľný manažér alebo jednoúčelové akcie — a k tomu nahrávací fake, ktorý ponechá skutočnú ochranu, a DNS tabuľka pre testy.

Dokumentácia

Použitie

Kde sa balík hodí — odosielanie webhookov, náhľady odkazov, importy a médiá z URL, integrácie na adresy zákazníkov a upozornenia na SSRF.

Inštalácia

Inštalácia cez Composer — bez migrácií, s bezpečnými predvolenými hodnotami — a voliteľne publikovanie konfigurácie, prekladov a kontrola prostredia.

Konfigurácia

Každý kľúč config/safe-fetch.php — http, porty, zoznamy hostiteľov a rozsahov, blokovanie hostiteľov aplikácie, presmerovania, limity fetch, resolver.

Fasáda SafeFetch

Prehľad fasády SafeFetch — vet, allows, precheck, guard, http, fetch, download, truncated, policy, networks, urls — a makra Http::safe().

DI a akcie

Bez fasády: injektujte SafeFetchManager alebo zavolajte jednoúčelovú akciu — každá akcia so signatúrou execute() a metódou fasády.

Chránené požiadavky

Http::safe() krok za krokom — pripnutý curl handler, overenie každého kroku, kontroly pred a po odoslaní, odmietnuté voľby, pooly a limit odpovede.

Načítanie a sťahovanie

SafeFetch::fetch() načíta obmedzený, chránený GET do pamäte; download() ho streamuje do súboru nahradeného až po úspechu. Chyby a opakovanie.

Validácia a predbežná kontrola

Pravidlo SafeUrl a textové pravidlo safe_url s jednou neutrálnou správou, SafeUrl::withoutLookup() a SafeFetch::precheck() pri ukladaní.

Pravidlá cieľov

DestinationPolicy — metódy, ktoré pre jedno volanie sprísnia alebo uvoľnia pravidlá, vzory hostiteľov, poradie pravidiel, privátni hostitelia.

Presmerovania

Presmerovania sú predvolene vypnuté; po zapnutí sa každý krok overí a pripne, s limitom krokov, bez prechodu na http a s údajmi pri origine.

URL adresy a blokované siete

Ako sa URL adresy kanonizujú, 26 blokovaných rozsahov, IPv4 vnútri IPv6, cloudové metadáta, pomocné metódy na kontrolu a vlastný resolver.

Verdikty a výnimky

Enum Reason, hierarchia výnimiek, retryable() a blockedBy(), neutrálne správy, ktoré nikdy neuvádzajú URL adresu, a pomenované konštruktory.

Udalosti

DestinationRefused pri každom odmietnutí s dôvodom, hostiteľom, pravidlom a miestom posúdenia — nikdy s URL adresou — pripravené na upozornenia.

Príkazy Artisan

safe-fetch:check posúdi URL adresu alebo skontroluje prostredie, ako text alebo JSON; php artisan about ukáže aktívne pravidlá len ako počty.

Použitie vo vlastnom balíku

Recepty pre balíky, ktoré načítavajú URL svojich používateľov — pravidlá bez uvoľnení hostiteľa, manažér, obmedzovač, opakovanie a predbežná kontrola.

Model hrozieb

Proti čomu ochrana bráni — rebinding, maskované adresy, presmerovania, proxy, triky parsera, prezradzujúce chyby — a čo nezaručuje.

Testovanie

SafeFetch::fake() zaznamená každý verdikt a ponechá skutočnú ochranu; fakeDns() odpovedá na preklady z tabuľky; všetky overenia a pripnutie v teste.

Požiadavky

PHP 8.4+, Laravel 13, ext-curl na odosielanie chránených požiadaviek, ext-intl pre medzinárodné mená, dva balíky Roundly — bez databázy.

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.