sql >> Database >  >> RDS >> Mysql

Waar mysql_real_escape_string gebruiken om SQL-injectie te voorkomen?

Kortom, elke keer dat u onveilige gegevens gebruikt (gebruikersinvoer, waarde uit een database, een bestand of een externe website, d.w.z. alle gegevens die u niet 100% zeker weten dat het veilig is) in een SQL-query, moet u eraan ontsnappen met mysql_real_escape_string . Merk op dat volgens OWASP , deze functie is niet veilig voor het ontsnappen van dynamische tabelnamen (maar dit is veel minder gebruikelijk dan het invoegen van "basis" gebruikersinvoer).

Ik raad je aan om het hele OWASP-artikel over SQL-injectie te bekijken , en ook om door de rest van de website te bladeren. Het is een geweldige bron van informatie over beveiliging in webapplicaties.

IMO, de geprefereerde manier om SQL-injectie te voorkomen is het gebruik van voorbereide verklaringen .

Onthoud dat als u ervoor kiest om mysql_real_escape_string() te gebruiken het werkt alleen wanneer het wordt gebruikt in een tekenreeks die wordt gescheiden door aanhalingstekens. Gebruik het nooit voor waarden zonder aanhalingstekens. Dit omvat numerieke waarden; valideer in plaats daarvan dat de gebruikersinvoer numeriek is.



  1. Datumlijst in een bereik krijgen in PostgreSQL

  2. Een datetime-veldtijdstempel converteren van mysql naar php

  3. Hoe kan ik het scherm in de MySQL-console wissen?

  4. Schema instellen in PostgreSQL JDBC lijkt niet te werken