Video: Sådan undgår du indbrud i julen 2025
Den første regel om at undgå kodeinjektion ind i C ++ programmer er aldrig nogensinde tillade brugerindgang til at blive behandlet af en almindelig sprogtolk. En almindelig fejl ved SQL-indsprøjtning er, at programmet accepterer brugerinddata, som om det altid var acceptabelt og indsætter det i en SQL-forespørgsel, som det derefter sender ud til databasemotoren til behandling.
Som et eksempel kan et program, der beder om brugerindgang på en dato, blive hacket. Den sikreste og mest brugervenlige tilgang ville være at give brugeren en kalender grafik, hvorfra han kunne vælge start- og slutdatoer. Programmet vil derefter oprette en dato baseret på, hvad brugeren klikker på.
Hvis dette ikke er muligt, skal programmet omhyggeligt kontrollere indgangen for at sikre, at indgangen var i korrekt format for en dato, i dette tilfælde yyyy / mm / dd < - med andre ord fire cifre efterfulgt af et skråstreg efterfulgt af to cifre og en skråstreg og endelig to yderligere cifre. Intet andet skal betragtes som acceptabel input. Nogle gange kan du ikke være så specifik om formatet. Hvis du skal give brugeren mulighed for at indtaste fleksibel tekst, kan du i det mindste undgå specialtegn. For eksempel er det stort set umuligt at lave SQL-kodeinjektion uden at bruge enten et enkelt eller dobbelt citat.
// Tjek nogle snor 's for at sikre, at det er lige ASCII size_type off = s. find_first_not_of ("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ01234567890_"); hvis (off! = string:: npos) {cerr << "errorn";}
Denne kode søger strengen
s for et tegn, der ikke er et af tegnene A til Z, a til og med z, 0 til 9 eller understregning. Hvis den finder et sådant tegn, afviser programmet indgangen.