Question

hi im en utilisant Acunetix pour tester mon site le problème est avec ce script http://boedesign.com/blog / 2007/02/18 / ajax-nombre d'étoiles /

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

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

dans la colonne rating_id mysql, je veux permettre que des chiffres là-dedans, donc je l'ai fait un peu, mais depuis fix le premier numéro est de 8 son trought de passage du si, comment puis-je résoudre ce problème? ses quelque chose comme ceci à 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é »

Était-ce utile?

La solution

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.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top