sql >> Databasteknik >  >> RDS >> Mysql

Är det tillräckligt att använda mysqli_real_escape_string för att säkra min frågesträng?

Om den används överallt korrekt är real_escape_string ett alternativ. Men överväg följande kod:

$page = $_GET['page'];
$sql = 'SELECT `name` FROM `user` WHERE `id` = ' . mysqli_real_escape_string($page);

Säkert eller inte? real_escape_sträng kan endast användas för att undvika strängar inom citattecken. $page kan vara 1 OR id IN (2,3,4,5,6,7,8,9) → inga citattecken, ingen riktig flykt. Att casta till rätt datatyp (int) kan hjälpa i det här fallet. Det är bättre att använda förberedda uttalanden, de är inte lika lätta att missbruka.




  1. MySQL - Hur summerar man tider?

  2. GitLab CI Django och Postgres

  3. INSERT INTO ... FRÅN SELECT ... RETURNERAR ID-mappningar

  4. Få en lista över datum mellan två datum med hjälp av en funktion