用户输入过滤 - 我是否需要过滤HTML?

时间:2010-02-21 09:19:27

标签: php security user-input validation

注意:我在其他地方处理SQL注入和输出转义 - 这个问题仅涉及输入过滤,谢谢。

我正在重构我的用户输入过滤功能。在将GET / POST参数传递给具有filter_var()的特定于类型的过滤器之前,我执行以下操作:

现在的问题是:将参数传递给htmLawedHTML Purifier这样的过滤器是否仍然有意义,或者我可以将输入视为安全吗?在我看来,这两者主要区别于允许的HTML元素和属性的粒度(我不感兴趣,因为我删除了所有内容),但是htmLawed文档有一个关于“dangerous characters”的部分,它表明可能是使用它的理由。在这种情况下,它会是一个理智的配置吗?

2 个答案:

答案 0 :(得分:2)

XSS有许多不同的安全方法。知道你的方法是否存在水的唯一原因是通过剥削来测试。我建议使用Free XSS vulnerability Scanner *或开源wapiti

老实说,我永远不会使用strip_tags(),因为你并不总是需要html标签来执行javascript!我喜欢htmlspecialchars($var,ENT_QUOTES);

例如,这很容易受到xss:

的攻击
print('<A HREF="http://www.xssed.com/'.strip_tags($_REQUEST[xss]).'">link</a>');

您不需要&lt;&gt;在这种情况下执行javascript是因为你可以使用 onmouseover,这是一个示例攻击:

$_REQUEST[xss]='" onMouseOver="alert(/xss/)"';

ENT_QUOTES将处理双引号,这将修补此XSS漏洞。

*我隶属于此网站/服务。

答案 1 :(得分:0)

我认为你所做的事情是安全的,至少从我的观点来看,没有HTML代码可以通过你的过滤器