Pergunta

oi estou usando Acunetix para testar meu site, o problema é com este script http://boedesign.com/blog/2007/02/18/ajax-star-rating/

Acunetix não mostra nenhuma mensagem, mas quando eu testo o SQL cego, posso obter valores como

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

Na coluna rating_id mysql, eu quero apenas permitir números lá, então fiz uma pequena correção, mas como o primeiro número é 8 sua aprovação, a aprovação do IF, como posso consertá -lo? É algo assim em inclui/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 quase o mesmo pensa no "// se JavaScript estiver desativado"

Foi útil?

Solução

Se você souber que a classificação deve ser um número inteiro, você pode lançar sua variável como um número inteiro:

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

Você pode fazer também em seu id variável.

Ele garante que você tenha apenas valores inteiros.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top