sql >> Base de Datos >  >> RDS >> Mysql

php:cómo evitar la inyección de SQL desde $_POST

Parece que podría ejecutarse, así que si falla, describa cómo.

Sin embargo, hay un error inmediatamente visible en él:en las líneas

$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.')";

está comenzando una cadena con comillas dobles e intenta interrumpir la cadena con comillas simples, lo que no funcionará. Entonces el código debe ser:

$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.")";

Dependiendo de su entorno, además, existe una falla de seguridad importante en su código:por ejemplo, en la línea

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

está utilizando $_POST para ponerlo directamente en una consulta SQL, lo que abre un llamado agujero de seguridad de inyección SQL.