Ciego de inyección SQL mediante Acunetix
-
20-09-2019 - |
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"
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.