Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

php:como evitar injeção de SQL de $_POST


Parece que pode ser executado, portanto, se falhar, descreva como.

Há, no entanto, um erro imediatamente visível:nas linhas
$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.')";

você está iniciando uma string com aspas duplas e tenta interromper a string com aspas simples, o que não funcionará. Então o código deve 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.")";

Dependendo do seu ambiente, além disso, há uma importante falha de segurança em seu código:Por exemplo, na linha
$sLimit = " FIRST ".$_POST['iDisplayStart']." SKIP ".$_POST['iDisplayLength'];

você está usando $_POST para colocá-lo diretamente em uma consulta SQL, o que abre a chamada brecha de segurança de injeção de SQL.