Mysql
 sql >> Base de données >  >> RDS >> Mysql

php :comment empêcher l'injection SQL de $_POST

Il semble qu'il puisse fonctionner, donc s'il échoue, veuillez décrire comment.

Il y a cependant une erreur immédiatement visible :dans les lignes

$sQuery = "SELECT COUNT(*) FROM (SELECT LINE_NAME, MODEL_ONLY, VER_ONLY, PROD_NO,
                                         LOT_SIZE, START_SERIAL, SERIAL_NO_LOW, SERIAL_NO_UP, PROD_DATE 
                                  FROM DOC_TO'.$sWhere.$sOrder.$sLimit.')";

vous commencez une chaîne avec des guillemets doubles et vous essayez d'interrompre la chaîne avec des guillemets simples, ce qui ne fonctionnera pas. Donc le code doit être :

$sQuery = "SELECT COUNT(*) FROM (SELECT LINE_NAME, MODEL_ONLY, VER_ONLY, PROD_NO,
                                         LOT_SIZE, START_SERIAL, SERIAL_NO_LOW, SERIAL_NO_UP, PROD_DATE 
                                  FROM DOC_TO".$sWhere.$sOrder.$sLimit.")";

Selon votre environnement en plus il y a une faille de sécurité importante dans votre code :Par exemple dans la ligne

$sLimit = " FIRST ".$_POST['iDisplayStart']." SKIP ".$_POST['iDisplayLength'];

vous utilisez $_POST pour le placer directement dans une requête SQL, ce qui ouvre une faille de sécurité dite d'injection SQL.