Pregunta

hi im utilizando Acunetix a probar mi sitio el problema es con este script http://boedesign.com/blog / 2007/02/18 / ajax-star-rating /

Acunetix doesnt mostrar ningún mensaje, pero cuando pruebo para SQL ciega que pueda obtener valores como

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

en la columna de la mysql rating_id, quiero permitir sólo números en allí, así que hice un poco de solución, pero desde el primer número es 8 su paso trought el caso, ¿cómo puedo solucionarlo? es algo como esto en 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 {

y casi el mismo pensar en el "// si javascript está deshabilitado"

¿Fue útil?

Solución

Si sabe que la calificación debe ser un entero, puede emitir su variable como un entero:

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

Puede hacerlo tan bien en su variable de id.

Se le asegura que sólo tiene valores enteros.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top