---
title: "Model hrozieb — Safe Fetch for Laravel | Roundly"
description: "Proti čomu ochrana bráni — rebinding, maskované adresy, presmerovania, proxy, triky parsera, prezradzujúce chyby — a čo nezaručuje."
url: https://roundly-consulting.com/sk/open-source/navody/safe-fetch-for-laravel/model-hrozieb
language: sk
---

[Všetky balíky](https://roundly-consulting.com/sk/open-source.md)

[Safe Fetch for Laravel](https://roundly-consulting.com/sk/open-source/navody/safe-fetch-for-laravel.md)

# Model hrozieb

Útočník ovláda URL adresu, ktorú aplikácia načítava, DNS mena v tejto URL (TTL 0, striedajúce sa odpovede) a HTTP server na verejnej adrese (akýkoľvek stav, Location a telo). Chráneným aktívom je všetko, čo je dostupné z hostiteľa aplikácie a útočník sa k tomu nedostane: loopback služby, privátna sieť, cloudové metadáta, samotná aplikácia.

| Útok | Obrana |
| --- | --- |
| Privátna alebo metadátová adresa priamo v URL (http://169.254.169.254/, \[fd00:ec2::254\]) | Tabuľka blokovaných sietí. |
| Alternatívne zápisy IPv4 (2130706433, 0x7f.1, 0177.0.0.1, 127.1) | Kanonizácia ich odmietne, nikdy ich nenormalizuje. |
| IPv4 vnútri IPv6 (\[::ffff:127.0.0.1\], NAT64, 6to4, Teredo) | Pravidlá vnorenia; 2001::/23 (vrátane Teredo) blokované celé. |
| Meno so súkromnou odpoveďou, alebo jednou súkromnou z viacerých | Preloží sa raz, posúdi sa každá adresa; jedna súkromná odpoveď meno zablokuje. |
| DNS rebinding | Každá overená adresa pripnutá do curl (CURLOPT\_RESOLVE); curl meno nikdy neprekladá sám. |
| Proxy z prostredia si meno preloží sama | proxy: '' pri každom kroku; proxy nastavenú volajúcim ochrana odmietne. |
| Zdieľané spojenie otvorené na inú adresu | Handler vlastnený ochranou, CURLOPT\_FRESH\_CONNECT, CURLOPT\_FORBID\_REUSE. |
| Handler bez curl ignoruje pripnutie | Ochrana vynúti vlastný curl handler a potom skontroluje primary\_ip. |
| Kód za ochranou presmeruje požiadavku alebo zruší pripnutie | Handler pred spojením znovu skontroluje URL, hlavičku Host a voľby pripnutia; CURLOPT\_PREREQFUNCTION preruší spojenie mimo overených adries pred odoslaním prvého bajtu. |
| Voľba curl od volajúceho, ktorá obíde pripnutie (CURLOPT\_UNIX\_SOCKET\_PATH, CURLOPT\_CONNECT\_TO, CURLOPT\_PRE\_PROXY …) | Voľby curl od volajúceho prechádzajú zoznamom povolených. |
| Presmerovanie na privátnu adresu, na http alebo do slučky | Presmerovania sú predvolene vypnuté; po zapnutí sa každý krok overí a pripne, prechod na http a prekročenie limitu sa odmietnu. |
| Prihlasovacie údaje poslané pri presmerovaní na iný origin | auth, Authorization a curl HTTPAUTH / USERPWD sa na inom origine zahodia (CVE-2022-31090); hlavičky len na prvý origin, plus výslovný zoznam preposielaných. |
| Neobmedzená odpoveď | maxResponseBytes v pravidlách (oreže); maxBytes vo fetch() (too\_large). |
| Rozdiely medzi parsermi (a.com\\@127.0.0.1, #@, zone id, %) | Striktný parser; požiadavka ide na prestavanú URL. |
| Self-SSRF (vlastný hostiteľ aplikácie za verejným load balancerom) | Mená hostiteľov aplikácie sa odmietnu podľa mena. |
| Text chyby zmapuje internú sieť | Pevné správy podľa dôvodu, nikdy URL ani adresa; blocked a unresolved majú jednu spoločnú správu. |
| Dôveryhodné privátne meno odpovie metadátovou adresou | Privátny hostiteľ nikdy nevyníma cloudovú metadátovú adresu; to dokáže len povolený rozsah. |
| Balík zdedí uvoľnenia hostiteľa pre URL adresy svojich používateľov | withoutHostAllowlist(), withoutPrivateHosts(), withoutAllowedRanges() ich zahodia a bloky zostanú; allowHosts(\[\]) vyhodí výnimku. |
| Obídenie „len týchto hostiteľov“ adresou priamo v URL | Striktný zoznam povolených hostiteľov odmietne každú adresu zapísanú priamo. |

## Čo zaručené nie je

- Žiadna ochrana, keď ochrana nie je v ceste — obyčajné Http::get() chránené nie je.
- Ak aplikácia po makre presmeruje handler Http::safe() (->setHandler()), odstráni handler ochrany aj jeho opätovnú kontrolu; kontrola pred odoslaním stále ide s voľbami curl daného kroku (ak je tým handlerom curl) a kontrola primary\_ip zachytí akýkoľvek iný handler až po odoslaní požiadavky. Nahradenie klienta cez setClient() po makre ochranu odstráni úplne (klient nastavený pred makrom sa odmietne).
- Iný balík, ktorý zaregistruje makro safe po tomto, ho potichu nahradí — bezpečnostne kritický kód volá SafeFetch::guard() alebo SafeFetch::http().
- Preklad DNS sa v PHP nedá časovo obmedziť; timeout požiadavky pokrýva len prenos.
- Záznamy AAAA prichádzajú z DNS, nie z /etc/hosts — PHP nemá API pre IPv6 záznam zo súboru hosts.
- Povolenému rozsahu alebo privátnemu hostiteľovi sa dôveruje úplne na základe vašej konfigurácie — okrem toho, že privátny hostiteľ sa nikdy nedostane k cloudovej metadátovej adrese.
- precheck() a SafeUrl::withoutLookup() meno neprekladajú: meno, ktoré prejde, sa môže preložiť na privátnu adresu. Ochrana ho posúdi v plnom rozsahu pri načítaní.
- reason(), retryable() a blockedBy() rozlišujú „privátne“ od „neexistuje“ — tento rozdiel držte mimo dosahu toho, kto URL odoslal.
- Aplikácia dostupná cez verejné meno, ktoré nie je medzi jej hostiteľmi (iné DNS meno pre tú istú IP), sa nerozpozná — ďalšie mená uveďte v app\_hosts.extra.
- retry() Laravelu opakuje pri každej výnimke, ak callback when nepovie inak, preto filtrujte SafeFetchException, aby ste skončili pri prvom odmietnutí.
- Nové spojenie pri každej požiadavke: medzi chránenými požiadavkami nie je keep-alive — to je cena za žiadne zdieľanie spojení.

## 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](https://roundly-consulting.com/sk/podporte-nas.md)

Odoslaním daru súhlasíte s našimi [podmienkami prijímania darov](https://roundly-consulting.com/sk/podmienky-darov.md).

[Podporte našu open-source prácu (otvorí sa v novej karte)](https://donate.stripe.com/dRmeVe8FX5PF1Qd9pXcEw00) [Pridajte sa k nám na Patreone (otvorí sa v novej karte)](https://www.patreon.com/cw/roundly)

## 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.

[Ponuka do 48 hodín](https://roundly-consulting.com/sk/kontakt.md) [Prezrieť všetky balíky](https://roundly-consulting.com/sk/open-source/navody/safe-fetch-for-laravel.md)
