Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
En buffertöverskridning är en av de vanligaste källorna till säkerhetsrisker. En buffertöverskridning orsakas i huvudsak av att omarkerade, externa indata behandlas som tillförlitliga data. Kopiering av dessa data med hjälp av åtgärder som CopyMemory, strcat, strcpyeller wcscpy, kan skapa oväntade resultat, vilket gör att systemet skadas. I bästa fall avbryts ditt program med en kärndump, segmenteringsfel eller åtkomstöverträdelse. I värsta fall kan en angripare utnyttja buffertöverskridningen genom att introducera och köra annan skadlig kod i din process. Att kopiera indata, som inte har kontrollerats, till en stackbaserad buffert är den vanligaste orsaken till utnyttjbara fel.
Buffertöverskridanden kan ske på flera olika sätt. Följande lista ger en kort introduktion till några typer av buffertöverskridningssituationer och erbjuder några idéer och resurser som hjälper dig att undvika att skapa nya risker och minimera befintliga:
- 
statiska buffertöverskridningar 
- 
En statisk buffertöverskridning inträffar när en buffert, som har deklarerats i stacken, skrivs till med mer data än den allokerades att lagra. De mindre synliga versionerna av det här felet uppstår när overifierade användardata kopieras direkt till en statisk variabel, vilket orsakar möjlig stackkorruption. 
- 
Heap-överkörningar 
- 
Heap-överskridanden, liksom statiska buffertöverskridanden, kan leda till minnes- och stackkorruption. Eftersom heap-överskridanden sker i heapminnet snarare än på stacken, anser vissa att de är mindre kapabla att orsaka allvarliga problem; Överskridanden av heap kräver dock verklig programmeringsvård och är lika kapabla att tillåta systemrisker som statiska buffertöverskridningar. 
- 
matrisindexeringsfel 
- 
Matrisindexeringsfel är också en källa till minnesöverskridanden. Noggrann gränskontroll och indexhantering hjälper till att förhindra att den här typen av minne överskrids. 
Att förhindra buffertöverskridanden handlar främst om att skriva bra kod. Validera alltid alla dina ingångar och hantera fel smidigt när det behövs. Mer information om hur du skriver säker kod finns i följande resurser:
- Maguire, Steve [1993], Writing Solid Code, ISBN 1-55615-551-4, Microsoft Press, Redmond, Washington.
- Howard, Michael och LeBlanc, David [2003], Writing Secure Code, 2d ed., ISBN 0-7356-1722-8, Microsoft Press, Redmond, Washington.
Notis
Dessa resurser kanske inte är tillgängliga i vissa språk och länder.
Säker stränghantering är ett långvarigt problem som fortsätter att åtgärdas både genom att följa god programmeringspraxis och ofta genom att använda och eftermontera befintliga system med säkra, stränghanteringsfunktioner. Ett exempel på en sådan uppsättning funktioner för Windows-gränssnittet börjar med StringCbCat.