---
title: "Bezpečnosť uploadu — Media Library for Laravel | Roundly"
description: "Každý názov a typ, ktorý sa dostane do úložiska, je nedôveryhodný — rozpoznanie mime, bezpečné názvy, pravdivé prípony a strážené sťahovanie."
url: https://roundly-consulting.com/sk/open-source/navody/media-library-for-laravel/bezpecnost-uploadu
language: sk
---

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

[Media Library for Laravel](https://roundly-consulting.com/sk/open-source/navody/media-library-for-laravel.md)

# Bezpečnosť uploadu

Každý názov a typ, ktorý sa dostane do úložiska, sa považuje za nedôveryhodný:

- Mime typ sa rozpozná z bajtov (ext-fileinfo) — nikdy sa nepreberá od klienta, z hlavičky Content-Type vzdialeného servera ani z metadát disku.
- Uložený názov je jeden bezpečný segment cesty. Časti adresárov, oddeľovače a riadiace znaky sa z názvu od klienta aj z usingFileName() odstránia, takže názov sa nikdy nedostane mimo adresára média.
- Prípona nemôže klamať o aktívnom obsahu. Prípona, ktorú môže webový server spustiť (.php, .phtml, .shtml, …), sa nikdy neuloží a prípona, ktorú spúšťa prehliadač (.html, .svg, .js, …), sa ponechá, len ak bajty naozaj zodpovedajú tomuto typu — PNG nahraté ako x.html sa uloží ako x.png. Pravdivé či neškodné prípony (IMG\_0001.JPG, data.csv) zostanú.
- addFromUrl() sťahuje len URL s http/https a URL od používateľa mu môžete odovzdať bezpečne — ochranu zdieľa s MediaLibrary::remote() (pozrite Vzdialené URL). Každý krok sa kanonizuje a zostaví nanovo (prihlasovacie údaje v URL, číselné zápisy IPv4, spätná lomka či % v hoste a zone id v IPv6 sa odmietnu) a host, ktorý je, preloží sa alebo presmeruje na súkromnú, loopback, link-local (cloud metadata), carrier-grade NAT či inú rezervovanú adresu — IPv4 aj IPv6 — alebo je localhost, odmietne ešte pred akoukoľvek požiadavkou naň (SSRF). Presmerovania sleduje sám (media.remote.max\_redirects, predvolene päť) a každý krok overí rovnako; každý názov hostu sa preloží raz a spojenie sa pripne na každú overenú adresu mimo proxy z prostredia, takže druhá odpoveď DNS nemôže podstrčiť internú.
- media.remote.headers idú len na vlastný pôvod URL — presmerovanie na iný pôvod ich nedostane, pokiaľ nezapnete media.remote.forward\_headers\_on\_redirect — a media.remote.timeout je jeden rozpočet na celé sťahovanie vrátane všetkých krokov.
- Dôveryhodné interné hosty patria do media.remote.allowed\_private\_hosts (presné názvy hostov, adresy alebo rozsahy adresa/prefix); media.remote.block\_private\_networks => false ochranu vypne — len pre URL, ktorým plne dôverujete. Pripnutie vyžaduje ext-curl: bez neho sa názov hostu odmietne, priamo zadané adresy a povolené názvy hostov však fungujú. Internacionalizovaný alebo punycode (xn--) názov hostu vyžaduje ext-intl; bez neho sa odmietne.
- Sťahovanie z URL sa streamuje na disk a zastaví sa v momente, keď prekročí limit veľkosti — počítaný po dekomprimovaní —, či už server pošle Content-Length, alebo nie. Každé odmietnutie vyhodí RemoteFileRejected; odpoveď iná ako 2xx vyhodí FileDoesNotExist a zlyhanie spojenia sa prejaví ako ConnectionException od Laravelu.
- Obrázky sa zmerajú z hlavičky ešte pred dekódovaním: obrázok nad media.max\_image\_pixels (predvolene 50 megapixelov) sa uloží bez variantov aj náhľadov, takže malý súbor, ktorý deklaruje obrovské plátno, nevyčerpá pamäť. SVG sa na serveri nikdy nedekóduje — pozrite Varianty obrázkov.
- Skupina bez acceptsMimeTypes() prijme akýkoľvek typ vrátane HTML a SVG. Každej skupine s uploadmi od používateľov dajte allowlist.

Rovnako zabezpečené je aj servírovanie — v časti URL, streaming a sťahovanie nájdete, ktoré typy streamovacia routa servíruje inline a prečo súkromné médiá potrebujú súkromný disk.

## 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/media-library-for-laravel.md)
