? Sikkerhetshull i programvare kan komme i flere former enn programmerere kan forestille deg. En av disse angrepene er bufferoverløpet , når en angriper gir mer informasjon enn et program kan håndtere. Spesielt programmering scenarier, for eksempel system programmering eller lavt nivå C-programmering , string buffere er sårbare for utnytting. Visse streng håndtering teknikker kan brukes for å forhindre disse angrepene . Disse teknikkene omfatte overvåking av strengen størrelse , sjekke buffer grenser og ved hjelp av trygge streng - håndtering funksjoner . String bufferoverløpene
Når programmerere skrive kode for å håndtere tekstlig brukerundersøkelser , beveger den inngangen ofte gjennom en buffer eller variabel . Buffer " overkjørt " oppstår når programmerer ikke skaper en buffer av tilstrekkelig størrelse til å håndtere brukerens input. Inngangen stopper ikke når buffer stopper. Snarere lagrer programmet teksten i minnet direkte følge buffer, potensielt overskrive viktige programdata . Strengbufferen flyter oftest oppstår når programmerere ikke sjekke brukerundersøkelser riktig.
Kontroll Boundaries
Bruker innspill kan ofte strekke seg utover grensene for en rekke på grunn av dårlig grensen sjekking. Spesielt i C , der strengene er representert som matriser av tegn , sette inn og manipulere strenger i disse matriser kan bli vanskelig. Det er mulig å feilberegner rekke indeksverdier og overskrive steder i minnet utenfor tabellen. Ved å alltid inkludert kode som sjekker grensene i tabellen for å sikre at de ikke er overskrevet , kan programmereren begrense streng tilgang til matrisen .
Bruke Store buffere
høyere nivå språk, for eksempel C # eller Java , kan programmereren bruke spesifikke innspill gjenstander som inneholder store buffere . Javas BufferedReader er et godt eksempel på dette. Brukeren kan opprette dette objektet med en stor bugger eller stokk med sin store standard buffer størrelse for å håndtere input . Gjenstanden håndterer deretter tekst i bufferen. I lavere nivå språk som C , programmerer vil mest sannsynlig bruke tegnet arrays . I så fall må programmereren sikre at karakteren rekke mottar data fortsatt stor nok til å håndtere alle tenkelige data størrelse.
Bruk Secure Funksjoner
Såvidt brukerundersøkelser går , benytter programmeringsspråket C ulike funksjoner for ulike input operasjoner . Ikke alle av disse alternativene er sikre. For eksempel Gets funksjonen sjekker ikke brukerundersøkelser i det hele tatt , og vil la noe passere inn i programmet . Den strcpy funksjonen vil ikke utføre grensekontroll. I stedet bør andre sikre funksjoner benyttes , for eksempel fgets eller strncpy funksjoner.