2009-12-22 3 views
0

salut im en utilisant Acunetix pour tester mon site le problème est avec ce script http://boedesign.com/blog/2007/02/18/ajax-star-rating/aveugle Injection SQL en utilisant Acunetix

Acunetix ne montre aucun message, mais quand je test pour sql aveugle, je peux obtenir des valeurs comme

8 and 1=0 -- 
8 and 31337-31337=0 

Dans la colonne mysql rating_id, je ne veux autoriser que des nombres, donc j'ai fait un petit correctif mais puisque le premier nombre est 8, son passage s'est passé le si, comment puis-je le réparer? ses quelque chose comme celui-ci à includes/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 { 

et presque le même penser à la « // Si JavaScript est désactivé »

Répondre

0

Si vous savez que la note doit être un entier, vous pouvez lancer votre variable comme un entier:

$rating = (int) $_POST['rating'] ; 

Vous pouvez faire aussi bien sur votre variable id.

Il vous assure que vous avez seulement des valeurs entières.

+0

wow c'était si évident>