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

php:come impedire l'iniezione SQL da $ _POST

Sembra che possa funzionare, quindi se fallisce, descrivi come.

C'è, tuttavia, un errore immediatamente visibile in esso:nelle righe

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

stai iniziando una stringa con virgolette doppie e provi a interrompere la stringa con virgolette singole, che non funzioneranno. Quindi il codice deve essere:

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

A seconda del tuo ambiente, inoltre, c'è un'importante falla di sicurezza nel tuo codice:ad esempio nella riga

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

stai usando $_POST per inserirlo direttamente in una query SQL, che apre un cosiddetto buco di sicurezza di SQL injection.