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ří:
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í.
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.
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ů.
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í.
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í.
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.
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.
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ů.
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.
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í 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. |
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čí.
※ 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.