Слепая SQL-инъекция с использованием acunetix - PullRequest
0 голосов
/ 22 декабря 2009

привет, я использую acunetix для тестирования моего сайта проблема с этим скриптом http://boedesign.com/blog/2007/02/18/ajax-star-rating/

acunetix не показывает ни одного сообщения, но когда я проверяю на вслепую sql, я могу получить значения вроде

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

в столбце rating_id mysql, я хочу, чтобы там были только цифры, поэтому я сделал небольшое исправление, но, поскольку первое число - 8, его прохождение - если, как я могу это исправить? что-то вроде этого в include / 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 {

и почти то же самое думают на "// ЕСЛИ ЯВАСКРИПТ ОТКЛЮЧЕН"

1 Ответ

0 голосов
/ 22 декабря 2009

Если вы знаете, что рейтинг должен быть целым числом, вы можете привести свою переменную как целое число:

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

Вы можете сделать то же самое с переменной id.

Это гарантирует, что у вас есть только целочисленные значения.

...