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"

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top