Mysql
 sql >> Database >  >> RDS >> Mysql

L'uso di mysqli_real_escape_string è sufficiente per proteggere la mia stringa di query?

Se usato ovunque correttamente real_escape_string è un'opzione. Ma considera il seguente codice:

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

Sicuro o no? real_escape_stringa può essere utilizzato solo per eseguire l'escape delle stringhe tra virgolette. $page potrebbe essere 1 OR id IN (2,3,4,5,6,7,8,9) → nessuna virgoletta, nessun vero e proprio escape. Il cast al tipo di dati corretto (int) potrebbe essere d'aiuto in questo caso. È meglio usare dichiarazioni preparate, non è facile utilizzarle in modo improprio.