Till skillnad från andra språk , C och C + + inte kontrollera storleken på indata innan du skriver det till en buffert . Om ingången är större än det utrymme som tilldelas i bufferten är den ingående skrivit över andra data i programstapeln . Förutom att orsaka ditt program inte fungerar korrekt , kan buffertspill tillåta en angripare att krascha ditt program , få tillgång till privata uppgifter eller ens ta kontroll över en maskin . Undvika osäkra C + +-funktioner är ett av stegen för att förhindra buffertspill i ditt program . Strängfunktioner
Osäkra funktioner som hanterar strängar inkluderar strcpy ( ) , strcat ( ) , sprintf ( ) , vsprintf () och får ( ) . Dessa funktioner utför operationer på strängvariabler , lagras som arrayer av tecken i C + + . Funktionerna läser en sträng från en källa - såsom användarens input - kopiera eller sammanfoga en sträng för att bilda en ny sträng . Om du inte kontrollera storleken på den nya strängen innan du skriver in det i minnet , kan det orsaka en buffer overflow .
Scanningsfunktioner
osäkra filer scanningsfunktioner inkluderar scanf ( ) , fscanf ( ) , sscanf ( ) , vscanf ( ) vsscanf () och vfscanf ( ) . Scanningsfunktioner läsa data från användarens input , en fil eller andra källor och skriva den till en formaterad sträng . Om den skannade data är större än det utrymme som avsatts för Formateringssträngen , kommer en buffer overflow inträffar .
Microsoft funktioner
Osäkra funktioner i Microsofts bibliotek innefattar wcscpy ( ) , _tcscpy ( ) , _mbscpy ( ) , wcscat ( ) , _tcscat ( ) , _mbscat () och CopyMemory ( ) . Dessa funktioner kopiera främst och sammanfoga funktioner som använder Microsoft - specifika objekt , snarare än strängar eller en datafil .
Andra funktioner
Andra osäkra C + + funktioner inkluderar realpath ( ) , getopt ( ) , getpass ( ) , streadd ( ) , strecpy ( ) och strtrns ( ) .