Hur man förhindrar filuppladdningssårbarheter

Hur man förhindrar filuppladdningssårbarheter
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å.





MAKEUSE AV DAGENS VIDEO

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å:





  • 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

 Kontrollerar filtilläggen som laddats upp till systemet

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 = pathinfo($filename);
switch($file_parts['extension'])
{
case "jpg":
break;

case "bat": // Or exe, dll, so, etc.
break;

case "":
case NULL: // No file extension
break;
}

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.