Čitatelia ako vy pomáhajú podporovať MUO. Keď uskutočníte nákup pomocou odkazov na našej stránke, môžeme získať pridruženú províziu. Čítaj viac.

Moduly nahrávania súborov sú jedným z najslabších článkov webových aplikácií. Akékoľvek chyby, dokonca aj tie, ktoré považujete za malé, môžu viesť k tomu, že kontrola servera sa dostane priamo do rúk kybernetického útočníka. Z tohto dôvodu potrebujú vývojári softvéru poznať najčastejšie chyby a niektoré spôsoby útoku, ktoré sa môžu vyskytnúť.

Čo je teda manipulácia na strane klienta? Ako tomu môžete zabrániť, aby boli vaše stránky a vaši používatelia v bezpečí?

Čo je falšovanie na strane klienta?

Manipulácia na strane klienta je základnou koncepciou útokov na webové aplikácie ako celku. Zjednodušene to znamená, že už nemôžete dôverovať žiadnym údajom, ktoré odosielate používateľovi. Okrem toho je manipulácia na strane klienta jedným zo základov bezpečného vývoja aplikácií. Ak preskúmate modul nahrávania súborov, s ktorým máte čo do činenia, a zvážite manipuláciu na strane klienta, údaje, ktorým nemôžete dôverovať, zahŕňajú:

instagram viewer
  • Názov nahraného súboru.
  • Typ obsahu nahraného súboru.

Tieto dve položky sú kde máte možnosť pridať na bielu listinu ako vývojár softvéru. Údaje o názve nahraného súboru môžu obsahovať čokoľvek s neoprávneným zásahom na strane klienta. S údajmi typu Content-Type nahraného súboru, aj keď útočník nahráva súbor .exe, tento súbor sa môže v systéme zobraziť ako obrázok/jpeg.

Prípona súboru a biely zoznam

Pri vývoji modulov na nahrávanie súborov je prvá vec, ktorú musíte urobiť proces pridávania na bielu listinu pre príponu súboru. Používateľ chce napríklad nahrať súbor s názvom „muo.jpeg“. Musíte sa uistiť, že táto prípona súboru, ktorý chce používateľ nahrať, je .jpeg. Na tento účel by mal systém skontrolovať nahraný súbor a zistiť, či ide o jednu z povolených prípon súborov. Ak chcete pochopiť, ako to môžete urobiť, preskúmajte nasledujúci jednoduchý kód PHP:

$file_parts = pathinfo($filename);
prepínač($file_parts['extension'])
{
prípad "jpg":
prestávka;

prípad "netopier": // Alebo exe, dll, tak, atď.
prestávka;

prípad "":
prípadNULOVÝ: // Žiadna prípona súboru
prestávka;
}

Môžete to urobiť pomocou bloku kódu podobného tomu, ktorý je uvedený vyššie, alebo môžete použiť triedy a funkcie poskytované rámcom, ktorý používate.

Dávajte pozor, aby ste nevytvorili údaje prípony súboru analýzou názvu súboru podľa znaku bodka (.), pretože útočník môže tento krok kontroly obísť s názvom súboru, ako napríklad „muo.jpeg.php“.

Čo sú informácie o type obsahu?

Informácie o type obsahu sú informácie odoslané v požiadavke HTTP pri každom nahraní súboru. Internetový prehliadač túto informáciu zistí a pridá ju k odoslanej požiadavke. Útočník sa môže pokúsiť zmeniť informácie falšovaním na strane klienta a obísť overenia na strane servera. V tejto fáze vývojári potrebujú kontrolný mechanizmus na overenie informácií o type obsahu. Toto samo osebe nebude stačiť; stále je to dôležitá otázka, ktorej by vývojári mali venovať pozornosť.

Povedzme, že zakódujete mechanizmus na správnu kontrolu prípony súboru a akceptujete iba súbory s príponou .jpeg. Okrem tohto preventívneho mechanizmu môžete priamo skontrolovať informácie o type obsahu a akceptovať iba súbory s informáciami o obrázku/jpeg, čo predstavuje ďalšiu úroveň ochrany kybernetické útoky

Súbory SWF Flash a kroky útoku

Prípona súboru a údaje typu Content-Type neznamenajú nič pre internetové prehliadače, ktoré podporujú doplnky ako Adobe Flash Player. Aj keď podpora pre tento prehrávač už nie je k dispozícii, stále je možné nainštalovať príslušné súbory do mnohých systémov, aj keď Flash zostáva bezpečnostným rizikom. V systéme, ktorý neprijal príslušné opatrenia, je možné zavolať súbor Flash s tag, bez ohľadu na jeho rozšírenie. To spôsobí ďalší vážny bezpečnostný problém.

Aby mohli vývojári konať, potrebujú poznať cesty, ktorými sa kyberzločinci môžu vydať. Môže sa to stať takto:

  1. Škodlivý útočník odovzdá na cieľovú webovú lokalitu súbor SWF (formát súboru Adobe Flash) s názvom „image.jpeg“. Počas procesu nahrávania sa overením na bielej listine potvrdí, že súbor nahraný útočníkom má príponu .jpeg. Overenie typu obsahu sa obchádza manipuláciou na strane klienta. Predstavte si, že tento súbor nahraný aktérom hrozby smeruje na „www (bodka) cieľová stránka (bodka) com/images/images.jpeg“.
  2. Povedzme, že útočník má webovú stránku s názvom útočník (bodka) com. Útočník volá súbor image.jpeg nahraný na cieľovú stránku na tejto webovej lokalite pomocou tag s priradením typu application/x-shockwave-flash.
  3. Nevinný používateľ sa prihlási do útočník (bodka) com. Táto lokalita vyvolá súbor SWF na adrese www (bodka) target-site (bodka) com/images/image.jpeg a vykoná príkazy zadané do súboru SWF.
  4. Prostredníctvom toho môže kyberútočník vytvoriť akcie požiadavky HTTP pre adresu cieľovej stránky (bodka) bez toho, aby si to bežní používatelia všimli. S týmito požiadavkami útočník využije reláciu nevinného používateľa a obíde kontrola CSRF.

Ak chcete lepšie porozumieť tomuto scenáru útoku, zvážte, že nasledujúci kód je súčasťou kódu HTML obsah odoslaný používateľovi útočníkom (bodka) com:

štýl="výška: 1px; šírka: 1px;" údaje ="www.target-site.com/images/image.jpeg" typ="aplikácia/x-shockwave-flash" allowscriptaccess="vždy" flashvars="c=čítať&u=niečo"

Jedným z najlepších riešení je prístup k súborom nahraným pomocou nahrávania súborov cez inú subdoménu. Vo vyššie uvedenom scenári môžete pristupovať k statickým súborom nie z tej istej domény, ale z inej subdomény takto: "http (dvojbodka)//file.cieľ-stránka (bodka) com/images/image.jpeg".

Ďalším riešením je pridať Obsah-Dispozícia: príloha informácie do odpovede HTTP, keď dostanete žiadosť o prístup k súborom, ktoré chcete nahrať.

Prijmite opatrenia týkajúce sa chýb zabezpečenia pri nahrávaní súborov

Každé nahrávanie súborov, ktoré môžu používatelia urobiť na webovú stránku, je nebezpečné, takže toto je jeden z problémov, ktorému by vývojári mali venovať najväčšiu pozornosť. Ak útočníci zistia takúto zraniteľnosť, môžu v rámci lokality otvoriť shell a ľahko zneužiť informácie na serveri. Je životne dôležité kontrolovať všetky súbory nahrané používateľmi, použiť metódy whitelistu a skryť umiestnenie nahraného adresára, ak je to možné.

A samozrejme, existuje mnoho ďalších dodatočných krokov, ktoré musíte urobiť, aby ste ochránili svoje stránky, aj keď pri nahrávaní súborových modulov prijmete všetky odporúčané opatrenia. Jedným z takýchto krokov je použitie hlavičiek zabezpečenia HTTP.