Läsare som du hjälper till att stödja MUO. När du gör ett köp med hjälp av länkar på vår webbplats kan vi tjäna en affiliate-provision. Läs mer.

Filuppladdningsmoduler är en av de svagaste länkarna i webbapplikationer. Alla misstag som görs, även de som du anser vara små, kan resultera i att serverkontrollen hamnar direkt i en cyberattackares händer. Av denna anledning måste mjukvaruutvecklare känna till de vanligaste misstagen och några attackmetoder som kan uppstå.

Så vad är manipulering på klientsidan? Hur kan du bekämpa detta för att hålla dina webbplatser och dina användare säkra?

Vad är manipulering på klientsidan?

Ändring på klientsidan är grundkonceptet för webbapplikationsattacker som helhet. Enkelt uttryckt betyder det att du inte längre kan lita på någon av de uppgifter du skickar till användaren. Dessutom är manipulering på klientsidan en av grunderna för säker applikationsutveckling. Om du undersöker filuppladdningsmodulen du har att göra med och överväger manipulering på klientsidan, inkluderar den information du inte kan lita på:

instagram viewer
  • Namnet på den uppladdade filen.
  • Innehållstypen för den uppladdade filen.

Dessa två objekt är var du har möjlighet att vitlista som mjukvaruutvecklare. Namndata för den uppladdade filen kan innehålla vad som helst med manipulering på klientsidan. Med Content-Type-data för den uppladdade filen, även om angriparen laddar upp en .exe-fil, kan denna fil visas som en bild/jpeg i systemet.

Filtillägg och vitlista

När du utvecklar filuppladdningsmoduler är det första du ska göra vitlistningsprocessen för filtillägget. En användare vill till exempel ladda upp en fil med namnet "muo.jpeg". Du måste se till att det här filtillägget som användaren vill ladda upp är .jpeg. För detta bör systemet kontrollera den uppladdade filen och se om det är ett av de tillåtna filtilläggen. För att förstå hur du kan göra detta, undersök följande enkla PHP-kod:

$file_parts = sökvägsinfo($filnamn);
växla($file_parts['tillägg'])
{
fall "jpg":
ha sönder;

fall "fladdermus": // Eller exe, dll, så, etc.
ha sönder;

fall "":
fallNULL: // Inget filtillägg
ha sönder;
}

Du kan göra detta med ett kodblock som liknar det ovan, eller så kan du använda klasserna och funktionerna som tillhandahålls av ramverket du använder.

Var försiktig så att du inte skapar filtilläggsdata genom att analysera filnamnet enligt punkttecknet (.), eftersom angriparen kan kringgå detta kontrollsteg med ett filnamn som "muo.jpeg.php".

Vad är information av innehållstyp?

Content-Type information är en del av information som skickas i HTTP-begäran för varje filuppladdning. Webbläsaren upptäcker denna information och lägger till den i den skickade begäran. Angriparen kan försöka ändra informationen med manipulering på klientsidan och kringgå valideringar på serversidan. I detta skede behöver utvecklare en kontrollmekanism för att göra validering av innehållstypsinformationen. Bara detta kommer inte att räcka; ändå är det en viktig fråga för utvecklare att uppmärksamma.

Låt oss säga att du kodar en mekanism för att kontrollera filtillägget korrekt, och att du bara accepterar filer med filtillägget .jpeg. Utöver denna försiktighetsmekanism kan du kontrollera innehållstypsinformationen just in case och bara acceptera filer med bild/jpeg-information, en extra nivå av skydd mot cyberattack

SWF Flash-filer och attacksteg

Filtillägget och Content-Type-data betyder ingenting för webbläsare som stöder plugin-program som Adobe Flash Player. Även om stöd för den spelaren inte längre är tillgängligt, är det fortfarande möjligt att installera de relaterade filerna på många system, även om Flash förblir en säkerhetsrisk. I ett system som inte har vidtagit relevanta försiktighetsåtgärder är det möjligt att anropa en Flash-fil med taggen, oavsett dess förlängning. Detta kommer att orsaka ytterligare ett allvarligt säkerhetsproblem.

För att kunna vidta åtgärder måste utvecklare veta vilka vägar cyberbrottslingar kan ta. Så här kan det hända:

  1. Den skadliga angriparen laddar upp en SWF (ett Adobe Flash-filformat) med namnet "image.jpeg" till målwebbplatsen. Under uppladdningsprocessen bekräftas det i vitlistningsverifieringen att filen som laddats upp av angriparen har filtillägget .jpeg. Innehållstypsverifiering förbigås med manipulering på klientsidan. Föreställ dig att den här filen, uppladdad av hotaktören, går till "www (dot) target-site (dot) com/images/images.jpeg".
  2. Låt oss säga att angriparen har en webbplats som heter attacker (dot) com. Angriparen anropar filen image.jpeg som laddats upp till målplatsen på denna webbplats med hjälp av taggen med applikationen/x-shockwave-flash-typtilldelningen.
  3. En oskyldig användare loggar in på attacker (dot) com. Den webbplatsen anropar SWF-filen på www (dot) target-site (dot) com/images/image.jpeg och utför de kommandon som ges till SWF.
  4. Genom detta kan cyberattackaren skapa HTTP-förfrågningsåtgärder för target-site (dot) com-adressen utan att normala användare märker det. Med dessa förfrågningar kommer angriparen att använda sessionen för den oskyldiga användaren och förbigå CSRF-kontrollen.

För att förstå detta attackscenario tydligare, överväg att följande kod finns i HTML innehåll skickat till användaren av attacker (dot) com:

stil="höjd: 1px; bredd: 1px;" data="www.target-site.com/images/image.jpeg" typ="applikation/x-shockwave-flash" allowscriptaccess="alltid" flashvars="c=läs&u=något"

En av de bästa lösningarna är att komma åt filerna som laddas upp med filuppladdning via en annan underdomän. I det tidigare nämnda scenariot kan du komma åt statiska filer inte från samma domän, utan från en annan underdomän enligt följande: "http (kolon)//file.target-site (dot) com/images/image.jpeg".

En annan lösning är att lägga till Innehåll-Disposition: bilaga information till HTTP-svaret när du får en begäran om åtkomst till de filer du vill ladda upp.

Vidta försiktighetsåtgärder för filuppladdningssårbarheter

Alla filuppladdningar som användare kan göra till en webbplats är farliga, så detta är en av de frågor som utvecklare bör vara mest uppmärksamma på. Om angripare upptäcker en sådan sårbarhet kan de öppna ett skal på webbplatsen och enkelt utnyttja informationen på servern. Det är oerhört viktigt att kontrollera alla filer som laddas upp av användare, tillämpa vitlistasmetoder och dölja platsen för den uppladdade katalogen om möjligt.

Och naturligtvis finns det många andra ytterligare steg du måste vidta för att skydda din webbplats, även om du vidtar alla rekommenderade försiktighetsåtgärder för att ladda upp filmoduler. Att använda HTTP-säkerhetsrubriker är ett sådant steg du kan ta.