Hvis du tar brukerundersøkelser gjennom en nettside, og sette det inn i en SQLite database er det en sjanse for at du har igjen selv vidåpne for et sikkerhetsproblem kjent som SQL Injection. Denne leksjonen vil lære deg hvordan du kan bidra til å forhindre at dette skjer, og hjelpe deg å sikre dine skript og SQLite uttalelser. 
 
 Injeksjon vanligvis oppstår når du spør en bruker for innspill, som deres navn, og i stedet for et navn de gir du en SQLite erklæring om at du vil uvitende kjøre på databasen 
 
 Aldri klareringsbruker levert data, bearbeide disse dataene kun etter validering.; Som regel gjøres dette ved mønstergjenkjenning. I eksempelet nedenfor, er brukernavnet begrenset til alfanumeriske tegn pluss understreking og til en lengde på mellom 8 og 20 tegn -. Endre disse reglene etter behov 
 if (preg_match ("/^ \\ w {8,20} $ /" , $ _GET ['brukernavn'], $ kamper)) {$ db = new SQLiteDatabase ('filnavn'); $ resultere = @ $ DB > spørring ("SELECT * FROM brukere WHERE brukernavn = $ kampene [0]");} else {echo "brukernavn ikke akseptert";} 
 For å demonstrere problemet, bør du vurdere dette utdraget: 
 $ name = "Qadir '; DELETE FROM brukere;"; @ $ DB > spørring ("SELECT * FROM brukere WHERE brukernavn =' {$ name}"); 
 Funksjonen samtalen er ment å hente en post fra brukerne bordet der navnet kolonnen samsvarer med navnet spesifisert av brukeren. Under normale omstendigheter,  $ name 
 ville bare inneholde alfanumeriske tegn og kanskje mellomrom, for eksempel streng Ilia. Men her, ved å legge en helt ny forespørsel til $ navn, blir kallet til databasen til katastrofe. Injisert DELETE spørringen fjerner alle poster fra brukere 
 
 Det er databaser grensesnitt som ikke tillater spør stabling eller utførende flere spørringer i en enkelt funksjon samtale. Hvis du prøver å stable spørringer, mislykkes samtalen, men SQLite og PostgreSQL, lykkelig utføre stablet spørringer, gjennomføre alle de spørsmål som er gitt i en streng og skape et alvorlig sikkerhetsproblem 
 
 Hindre SQL Injection. 
 < p> Du kan håndtere alle escape-tegn smart i skriptspråk som Perl og PHP. Programmeringsspråket PHP gir funksjonen  string sqlite_escape_string () 
 å flykte inn tegn som er spesielle for SQLite 
 if (get_magic_quotes_gpc ()) {$ name = sqlite_escape_string (navn $);}. $ Resultat = @ $ DB > spørring ("SELECT * FROM brukere WHERE brukernavn = '{$ name}"); 
 Selv om koding gjør det trygt å sette inn data, det vil gjengi enkle tekst sammenligninger og  som 
 klausuler i spørringene ubrukelig for kolonnene som inneholder binære data 
 
Hold et notat som addslashes () bør ikke brukes til å sitere dine strenger for SQLite spørringer.; det vil føre til merkelige resultater når du henter dine data. Anmeldelser

