我相信在阅读标题时,我会阅读所有相关主题。
简而言之,我几乎使用了所有PHP函数来清理用户的输入,但我仍然无法停止执行简单的XSS测试。
我想要保护的代码如下:
$keyword = $_POST['biz'];
$keyword = strip_tags($keyword); //this
$keyword = addslashes(str_replace("||sp_rp_and||", "&", $keyword));
$keyword = addslashes(str_replace("<", "HELLO", $keyword)); //this
$myFilter = new InputFilter(); //this
$keyword = $myFilter->process($_POST['biz']); //this
if($keyword=="")
$query="select * from `business` order by business_id DESC LIMIT 0,20";
else
然而,这些函数没有对变量 $ keyword
执行的操作两种可能性: *我没有我正在做的事情。 * XSS测试失败,但这并不意味着一个人可以使用它来伤害!!?
我使用的测试很简单(在页面的搜索栏中):`“&gt; alert(document.cookie);” 或者通过URL,两者都有相同的结果,带有cookie的弹出窗口显示。
我做错了什么,从几天开始就是这样做的。
P.S。甚至在服务器上安装了Mod_security2并且它没有完成任务(或者我没有正确配置)!!
答案 0 :(得分:2)
在输出之前用htmlspecialchars()
包裹用户指定的所有内容。
答案 1 :(得分:1)
在我看来,你正在做一切艰苦的工作来处理表格,然后稍微松开它
这里你已经对$ _POST ['biz']进行了一些处理:
$keyword = $_POST['biz'];
$keyword = strip_tags($keyword); //this
$keyword = addslashes(str_replace("||sp_rp_and||", "&", $keyword));
$keyword = addslashes(str_replace("<", "HELLO", $keyword)); //this
在这里,你将它完全等同于其他东西:
$keyword = $myFilter->process($_POST['biz']); //this
该行可能应该是:
$keyword = $myFilter->process($keywork);