, hvis du bruger input via et websted og stik det ind i en mysql database, er der en chance for, at du har forladt dig vidt åben 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 mysql 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 mysql erklæring om, at du vil løbe på uden jeres database., stol aldrig på brugerens 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)) ($resultat = mysql_query (" vælg * fra brugere, hvor brugernavn = $tændstikker [0] ");} andre (echo" brugernavn ikke accepteret "), for at godtgøre, at det problem, at dette uddrag: //meningen input $navn =" qadir « udgå af brugere; ". mysql_query (" vælg * fra brugere, hvis navn = {navn} "dollars"), den funktion skal hente en plade til fra brugerne tabel, hvor navnet kolonne, stemmer overens med det navn, der er specificeret 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. heldigvis, hvis du bruger mysql, mysql_query() funktion ikke tillader forespørgsel stabling eller udfører flere forespørgsler i en enkelt funktion.hvis du forsøger at stable forespørgsler, ring ikke. imidlertid andre php database, udvidelser, f.eks. 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.den mysql forlængelse for folkesundhedsprogrammet er den funktion, mysql_real_escape_string() at undslippe input tegn, som er særlige for mysql. hvis (get_magic_quotes_gpc()) ($navn = stripslashes ($navn);} $navn = mysql_real_escape_string ($navn); mysql_query ("vælg * fra brugere, hvis navn = {navn}" dollars "), den samme dilemma: at behandle som dilemma, en skik, at mekanismen skal konvertere bruger leveret% og _ tegn til literals.brug addcslashes(), en funktion, som lader angiver en karakter rækkevidde at flygte. $under = addcslashes (mysql_real_escape_string ("% something_"), "% _"); //$sub - = = 1% noget. _ mysql_query ("vælg * fra meddelelser, hvor emne som ($under}% «"),
mysql og sql injektion
Previous:mysql håndtering af kopier