SQL Injection cieca usando Acunetix
-
20-09-2019 - |
Domanda
im hi utilizzando Acunetix per testare il mio sito web il problema è con questo script http://boedesign.com/blog / 2007/02/18 / ajax-stelle-valutazione /
Acunetix non mostra alcun messaggio, ma quando i test per SQL ciechi posso ottenere valori come
8 and 1=0 --
8 and 31337-31337=0
nella colonna mysql rating_id, voglio consentire solo numeri in là, così ho fatto un po 'di difficoltà, ma dal momento che il primo numero è 8 suo passaggio trought il caso, come posso risolvere il problema? la sua qualcosa come questo in include / rating_process.php
// IF JAVASCRIPT IS ENABLED
if($_POST){
$id = escape($_POST['id']);
$rating = (int) $_POST['rating'];
if($rating <= 5 && $rating >= 1 && $id >= 1 && $id <=9999999){
if(@mysql_fetch_assoc(mysql_query("SELECT id FROM ratings WHERE IP = '".$_SERVER['REMOTE_ADDR']."' AND rating_id = '$id'")) || isset($_COOKIE['has_voted_'.$id])){
echo 'already_voted';
} else {
e quasi la stessa pensare al "// Se JavaScript è disattivato"
Soluzione
Se si sa che il voto deve essere un intero, è possibile lanciare la vostra variabile come un numero intero:
$rating = (int) $_POST['rating'] ;
Si può fare bene sul vostro variabile id
.
E si assicura di avere solo valori interi.