Uploader souborů

Proč je nahrávání souborů rizikové

Systémy pro příjem souborů od uživatelů jsou pohodlné, ale pokud nejsou správně navrženy, mohou vést k závažným zranitelnostem. Útočníci se pokouší zneužít upload k provádění libovolného kódu, vyčerpání kapacity serveru a distribuci nelegitimních souborů.

Mezi běžné hrozby patří:

  • Upload/execuční web shell — Nahrání škodlivého skriptu pro vzdálené ovládání.
  • Soubor s malwarem — Druhotné poškození šířením infekce na jiné uživatele.
  • Path traversal — Uložení do nechtěného místa skrze neprávní cestu.
  • DoS (ZIP bomba, soubory velké kapacity) — Vyčerpání úložného prostoru a výkonu.
  • Oklamání přípon/MIME — Obcházení pomocí dvojitých přípon jako .jpg.php nebo falešných Content-Type.
  • XSS prostřednictvím náhledu — Spuštění skriptu při náhledu SVG/HTML.

Základem opatření je zásada „hloubková obrana“ (defense in depth). Je účinné navrhnout systém se zajištěním více úrovní ochrany, spíše než se spoléhat pouze na jediné opatření.

Opatření: zásady ke zkvalitnění návrhu

Striktní kontrola přípon a MIME (whitelist metoda)

Omezte přípony na ty, které jsou povoleny, a rozhodujte o přijetí na základě více než jen na základě přípony. Zkontrolujte signaturu souboru (magické číslo) a ověřte obsah. Nespolehejte se na hlavičky Content-Type a implementujte postupy, které zabraňují podvodným metodám, jako jsou dvojité přípony a NULL bajty.

Bezpečnost názvů souborů a přejmenování

Nespojujte uživatelské názvy souborů přímo, ale nahraďte je jedinečnými jmény pomocí UUID nebo hash + časová značka, přičemž originální názvy souborů uchovávejte jako metadat. Zpracovávejte speciální znaky a omezte délku názvů.

Ochrana místa uložení a oprávnění

Je důležité ukládat nahrané soubory mimo web root a zajistit, aby nebyly přímo vykonatelné. Pokud je to možné, uložte je na specializované objekové úložiště (např. S3) a poskytujte odkazy ke stažení prostřednictvím aplikace. Omezte oprávnění složky na nejnižší úroveň potřebnou pro čtení a zápis, aniž byste poskytli práva na vykonávání.

Omezení velikosti a kontrola současného nahrávání

Nastavte maximální limit velikosti souborů a zaveďte kontrolu současného počtu nahrání a rychlostního limitu pro zajištění dostupnosti služby. V případě přijímání komprimovaných souborů (např. ZIP) je také nutné zkontrolovat každý soubor po rozbalení.

Šk scanner a neutralizace obsahu (CDR)

Po nahrání proveďte virus scanning (pokud možno pomocí více motorů) a pro PDF/Office atd. implementujte CDR (Content Disarm & Reconstruct) pro neutralizaci obsahu. Opětovným kódováním obrázků (načítáním → vytvoření nového souboru) je také účinné odstranit vložená podvodná data.

HTTPS / ochrana komunikace & CSRF opatření

Veškerá komunikace by měla být chráněna pomocí TLS (HTTPS) a implementujte opatření jako CSRF tokeny. Přidejte do odpovědí hlavičky Content-Disposition: attachment a X-Content-Type-Options: nosniff pro zabránění chybného chování prohlížeče.

Logování, audit a varovné mechanismy

Podrobně zaznamenávejte, kdo, kdy a jaké soubory zpracoval, a nastavte alarmy na abnormální chování (vysoká frekvence nahrávání nebo velké množství zamítnutí). Uchovávání hashů také může být účinné pro integritu souborů.

Testování bezpečnosti a penetrační testování

Po implementaci proveďte specializované testy zranitelnosti zaměřené na nahrávání souborů (vložení shellu, obcházení přípon, path traversal atd.) a pravidelně provádějte přezkum.

Pohled na UploadF jako příklad

Servis UploadF (uploadf.com), který zde představujeme, má vynikající pohodlí s podporou pro PC a smartphony, přetahování a uložení až 100 souborů najednou, ale v návrhu služby by se mělo brát v úvahu několik poznámek a opatření.

Kontrolní seznam implementace (z pohledu bezpečnostního designu)

Kontrolní bod Klíčové body pro provedení/ověření
Omezení whitelistu přípon Povolte pouze potřebné formáty. Černý seznam používejte jako doplňkový.
Kontrola MIME/sigantury Ověřte, zda odpovídá přípona a obsah (ověření magického čísla).
Přejmenování souborů Nahraďte je UUID nebo hash názvem a spravujte originální názvy jako metadata.
Odstranění speciálních znaků Odstranění nebo odmítnutí `/`, `\`, `..`, NULL atd.
Složka pro uložení Uložte mimo web root nebo do objekťového úložiště.
Oprávnění složky Zakázání provádění, minimální oprávnění pro čtení a zápis (princip minimálních oprávnění).
Maximální/minimální velikost souboru Jasná maximální omezení a kontrola po rozbalení ZIP atd.
Kontrola současného nahrávání Omezení paralelních nahrávání, řízení rychlosti a nastavení časového limitu.
Virus scanning/CDR Okamžité skenování po nahrání a neutralizace obsahu, pokud je to nutné.
Šifrování komunikace (HTTPS) Povinné použití TLS (zabránění útokům typu man-in-the-middle).
CSRF opatření Zavedení tokenové kontroly.
Nastavení hlaviček odpovědi Přidání Content-Disposition: attachment, X-Content-Type-Options: nosniff atd.
Logování a alarmy Audity nahrávání činností a upozorňování na abnormality.
Pravidelné bezpečnostní posouzení Pravidelně provádějte testy na zranitelnost a penetrační testy.
Automatické mazání starých souborů Úplná likvidace po uplynutí lhůty.
Omezený přístup/ověření Přísné řízení oprávnění na uživatelské/ skupinové úrovni.

Shrnutí a pohled z pohledu uživatele

Funkce nahrávání souborů má výhody a rizika. Implementace víceúrovňové obrany (whitelist, kontrola signatury, oddělení míst ukládání, opatření proti malwarem, auditování logů atd.) výrazně snižuje riziko útoků.

Pro uživatele je důležité, aby se cítili „pohodlně a bezpečně“. Například služby jako UploadF (uploadf.com) s funkcemi jako individuální odstraňování nebo nastavení doby uchovávání souborů může poskytnout uživatelům pocit bezpečí.

Odkazy a literární zdroje (část)

  1. OWASP — Šablona pro nahrávání souborů
  2. OPSWAT — Ochrana proti nahrávání souborů / nejlepší praktiky
  3. PortSwigger — Zranitelnosti nahrávání souborů
  4. SANS Institute — Pokyny pro bezpečné nahrávání souborů
  5. UploadF (uploadf.com) — Nahrávače souborů (představující web)

※ Výše uvedené odkazy představují příklady referenčních bodů v době sepisování článku. Pro podrobnější implementační dokumenty a aktuální informace o hrozbách se podívejte na oficiální dokumenty.


Hlavní stránka   Nápověda   Kontakt   🌐Language  
©Uploader souborů