php - 用户输入过滤——我需要过滤 HTML 吗?

标签 php security user-input validation

注意:我负责 SQL 注入(inject)和其他地方的输出转义 - 这个问题仅与输入过滤有关,谢谢。

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

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

最佳答案

有许多不同的 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>');

在这种情况下你不需要 <> 来执行 javascript 因为你可以使用 onmouseover,这里是一个示例攻击:

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

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

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

关于php - 用户输入过滤——我需要过滤 HTML 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2305435/

相关文章:

php - 如何检查我的 SQL 更新是否已完成?

php - 卡在 os.rename() 处

php - 在 PHP 中存储密码的哈希值

security - src 使用 HTTPS 的 SWF 是否安全?

javascript - 逗号与 Javascript 中的数字输入混淆

python-3.x - 如何在不需要按回车键的情况下接受输入 Python 3

php - PHP 项目的 Visual Studio 项目类型

javascript - 外部 javascript 为小部件调用 php?

security - 使用Puppet处理敏感信息

java - 在 java 中,如何处理有关 Windows 命令行参数的异常?