A fájlok felhasználóktól való átvétele kényelmes, de ha nem megfelelően van tervezve, súlyos sebezhetőségeket okozhat. A támadók a feltöltési lehetőségeket kihasználva próbálnak tetszőleges kódot végrehajtani, a szerver tárolókapacitását kimeríteni vagy illegális fájlokat terjeszteni.
A legjellemzőbb fenyegetések a következők:
Az alapvető intézkedés a "többrétegű védelem (defense in depth)". Ahelyett, hogy egyetlen intézkedésre támaszkodna, a több védelmi réteg együttes alkalmazásának terve hatékony.
A megengedett kiterjesztések korlátozása, és a fájlok fogadhatóságának döntése ne csak a kiterjesztésen alapuljon. Ellenőrizze a fájlok aláírását (magic number) és validálja a tartalmat. A Content-Type fejléceket ne bízzon meg, és valósítson meg eljárásokat a kettős kiterjesztések és NULL bájtok elkerülésére.
Ne tárolja a felhasználó által megadott fájlneveket. Cserélje le őket egyedi nevekre UUID vagy hash + időbélyeg segítségével, és tárolja külön a metaadatokban az eredeti fájlnevet. A speciális karaktereket és a hosszkorlátozást is kezelje.
A feltöltött fájlokat webroot-on kívül kell tárolni, és fontos, hogy ne legyenek közvetlen végrehajtási lehetőségeik. Ha lehetséges, tároljon egyedi objektumtárolóban (pl. S3), és generáljon letöltési linkeket az alkalmazás segítségével. A tárolóhelyeknek ne adjon végrehajtási jogokat, és korlátozza a minimális írási-olvasási jogokat.
Állítson be maximális fájlméretet, és vezessen be egyidejű feltöltési számok és sebességkorlátozások érdekében, hogy biztosítsa a szolgáltatás elérhetőségét. Ha tömörített fájlokat (pl. ZIP) fogad el, akkor a kicsomagolt fájlokat is ellenőrizni kell.
A feltöltés után azonnal hajtson végre víruskeresést (ha lehetséges, több motorral), a PDF / Office fájlok esetén pedig CDR (Content Disarm & Reconstruct) segítségével semlegesítse őket. A képeket újra kódolással (betöltés → új fájl generálása) kell feldolgozni, hogy eltávolítsa a benne lakozó rosszindulatú adatokat.
A kommunikációt kötelezően TLS (HTTPS) védelemmel kell ellátni, és CSRF tokenekkel kapcsolatos intézkedéseket kell megvalósítani. A letöltési válaszokhoz adjon hozzá Content-Disposition: attachment
és X-Content-Type-Options: nosniff
fejléceket, hogy megakadályozza a böngésző hibás működését.
Tartsa nyilván, hogy ki, mikor, mely fájlokkal foglalkozott, részletes naplózás mellett, és állítson be riasztásokat az anomális viselkedésre (magas feltöltési gyakoriság vagy nagy mennyiségű elutasítás). A fájlok összhangjának megőrzéséhez a hash értékekkel való kezelés is hatékony.
A megvalósítás után hajtson végre a fájlfeltöltésre specializált sérülékenység-ellenőrzéseket (shell beillesztés, kiterjesztés elkerülés, path traversal stb.), és végezzen rendszeres ellenőrzéseket.
A bemutatott UploadF (uploadf.com) kifejezetten PC és mobil platformokra optimalizált, drag-and-drop funkcióval és 100 fájl egyidejű feltöltésének lehetőségével rendelkezik, így kényelmes, ugyanakkor a szolgáltatás tervezése során az alábbi figyelmeztetéseket és fejlesztéseket is figyelembe kell venni.
Ellenőrzési tételek | Megvalósítás / Ellenőrzési szempontok |
---|---|
Kiterjesztés whitelist korlátozások | Csak a szükséges formátumok engedélyezettek. A fekete lista kiegészítő jellegűen használható. |
MIME / aláírás ellenőrzés | Ellenőrizze, hogy a kiterjesztés és a tartalom megfelel-e (magic number ellenőrzés). |
Fájlnevek átnevezése | Cserélje le UUID vagy hash névre, és kezelje az eredeti nevet metaadatként. |
Speciális karakterek eltávolítása | A `/`, `\`, `..`, NULL stb. eltávolítása vagy elutasítása. |
Tárolási könyvtár | Tárolja a webroot-on kívül vagy objektumtárolóban. |
Könyvtári jogok | Végrehajtás nem engedélyezett, minimális olvasási-írási jogok (principle of least privilege). |
Maximális/minimális fájlméret | Az alsó-határ beállítása és a ZIP stb. kicsomagolása utáni ellenőrzés. |
Egyidejű feltöltés irányítása | Párhuzamos szám limit, sebességirányítás, időkorlát beállítása. |
Víruskeresés / CDR | A feltöltés azonnali ellenőrzése és szükség szerinti semlegesítési eljárás. |
Kommunikáció titkosítása (HTTPS) | Megkövetelni TLS-t (az emberközti támadások megelőzése érdekében). |
CSRF védekezés | Token alapú ellenőrzések bevezetése. |
Válaszfejlécek beállítása | Content-Disposition: attachment , X-Content-Type-Options: nosniff stb. hozzáadása. |
Jelentés és figyelmeztetések | A feltöltési tevékenységeket auditálni kell, értesítéseket kell küldeni anomáliák esetén. |
Rendszeres biztonsági áttekintés | Rendszeresen végezzen sérülékenységi tesztelést és penetrációs tesztelést. |
Régi fájlok automatikus törlése | A megőrzési időszak lejárta után a teljes törlés megtervezése. |
HOzzáférés-vezérlés/piacok | A felhasználónkénti/csoportos elérhetőségek szigorú kezelése. |
A fájlok feltöltési funkciója mind a kényelmet, mind a kockázatokat magában foglalja. Az itt bemutatott többrétegű védelem (whitelist, aláírás-felülvizsgálat, tárolási helységek szétválasztása, malware elleni intézkedések, napló-ellenőrzések stb.) alkalmazásával a támadási kockázat jelentősen csökkenthető.
A felhasználók számára fontos, hogy "könnyen használható és biztonságos" élményt kapjanak. Például az UploadF (uploadf.com)-hoz hasonló, az egyedi törlés és tárolási idő beállításokkal rendelkező szolgáltatások nagyobb bizalmat adhatnak a felhasználóknak.
※ A fenti források az íráskori referencia példákat tartalmaznak. Kérjük, ellenőrizze a hivatalos dokumentációkat a részletes megvalósítási anyagokhoz és a legfrissebb fenyegetési információkhoz.