0

嗨,我正在使用 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,它的传递通过了 if,我该如何修复它?它在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 {

在“// IF JAVASCRIPT IS DISABLED”中的想法几乎相同

4

1 回答 1

0

如果您知道评级必须是整数,则可以将变量转换为整数:

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

你也可以在你的id变量上做。

它确保您只有整数值。

于 2009-12-22T15:47:54.767 回答