的Acunetix使用来测试我的网站,即时通讯喜 问题是这个脚本 http://boedesign.com/blog / 2007/02/18 / AJAX星级评级/

的Acunetix犯规显示任何信息,但是当我测试盲SQL我可以得到像

的值
8 and 1=0 --
8 and 31337-31337=0

在rating_id MySQL的专栏中,我想只允许在那里的数字,所以我做了一点点修复,但因为第一个数字为8的传球trought的如果,我该如何解决呢?其是这样的,在包括/ 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”

有帮助吗?

解决方案

如果您知道该评级必须是整数,你可以投你的变量作为一个整数:

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

您可以在您的id变量做的一样好。

它确保你,你只具有整数值。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top