sqlite - injektion

, hvis du bruger input via et websted og stik det ind i en sqlite database, er der en chance for, at du har forladt dig åbne for et sikkerhedsspørgsmål, kendt som sql injektion.vi vil lære dig at forhindre, at dette sker, og hjælpe dig med at finde din manuskripter og sqlite erklæringer. injektion opstår sædvanligvis, når du spørger en bruger af input, som deres navn, og i stedet for et navn, de giver dig en sqlite erklæring om, at du vil køre på din database, uvidende, stol aldrig på bruger indsendte data., behandle disse data kun efter validering; som regel sker dette ved mønster match.i nedenstående eksempel, brugernavn er begrænset til alfanumeriske tegn og understrege og en længde mellem 8 og 20 tegn - ændre disse regler, som er nødvendig, hvis (preg_match ("/^ \\ w (8,20} $/" $_get ['username "$tændstikker)) ($db = nye sqlitedatabase ('filename) $resultat = @ $db - > søgning (" vælg * fra brugere, hvor brugernavn = $tændstikker [0] ");} andre (echo" brugernavn ikke accepteret "), for at godtgøre, at det problem, at dette uddrag: $navn =" han "ikke brugere" @ $db - > søgning ("vælg * fra brugere, hvor brugernavn = {navn}" dollars "), den funktion skal hente en plade til fra brugerne bord, hvor navnet kolonne, stemmer overens med det navn, der er anført af brugeren.under normale omstændigheder $navn, ville kun indeholde alfanumeriske tegn og måske rum, såsom snoren illa.men her, ved at tilføje en ny forespørgsel til $navn, opfordringen til databasen bliver til katastrofe: den tilførte slette forespørgsel fjerner alle oplysninger fra brugerne. er der grænseflader, som ikke giver mulighed for søgning i databaser, stabling eller udfører flere forespørgsler i en enkelt funktion.hvis du forsøger at stable forespørgsler, men ring ikke sqlite og postgresql lykkeligt udføre stablede forespørgsler, udførelse af alle de forespørgsler, der er fastsat i en snor og skabe en alvorlig sikkerhedsrisiko. for at forhindre sql injektion:, kan du klare alt undslippe tegn på i scripting sprog som perl og folkesundhedsprogrammet.programmeringssprog php giver funktion, snor sqlite_escape_string(), at undslippe input tegn, som er særlige for sqlite. hvis (get_magic_quotes_gpc()) ($navn = sqlite_escape_string ($navn);} $resultat = @ $db - > søgning ("vælg * fra brugere, hvor brugernavn = {navn}" dollars ") og, selv om der gør det sikkert at indsætte de data, det vil gøre en enkel tekst sammenligninger, og som klausuler i deres spørgsmål, uanvendelige til kolonner, der indeholder binære data. ved en note, der addslashes() bør ikke anvendes til at citere deres strenge til sqlite spørgsmål. det vil føre til mærkelige resultater, når du henter din data.



Previous:
Next Page: