如何在我的网站中阻止XSS?

时间:2010-12-07 21:18:51

标签: php xss

我相信在阅读标题时,我会阅读所有相关主题。

简而言之,我几乎使用了所有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并且它没有完成任务(或者我没有正确配置)!!

2 个答案:

答案 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);