在关注XSS时,特别是对特殊情况

我已经看到很多关于这个问题的相互矛盾的答案。 许多人喜欢引用单独的php函数不会保护您免受xss的影响。

XSS究竟可以通过htmlspecialchars来实现,还有什么可以通过htmlentities来实现?

我了解这些功能之间的区别,但不是您留下的xss保护的不同级别。 谁能解释一下?


htmlspecialchars()不会保护您免受UTF-7 XSS漏洞攻击,即使在IE 9中也会困扰Internet Explorer:http://securethoughts.com/2009/05/exploiting-ie8-utf-7-xss-vulnerability-using - 本地重定向/

例如:

<?php
$_GET['password'] = 'asdf&ddddd"fancy˝quotes˝';

echo htmlspecialchars($_GET['password'], ENT_COMPAT | ENT_HTML401, 'UTF-8') . "n";
// Output: asdf&amp;ddddd&quot;fancyË

echo htmlentities($_GET['password'], ENT_COMPAT | ENT_HTML401, 'UTF-8') . "n";
// Output: asdf&amp;ddddd&quot;fancy&Euml;quotes

您应该始终使用htmlentities,并且在清理用户输入时很少使用htmlspecialchars。 此外,您应该始终剥离标签。 对于真正重要且安全的站点,您绝不应该信任strip_tags()。 使用HTMLPurifier for PHP。


如果使用PHP的header命令来设置字符集

header('Content-Type: text/html; charset=utf-8');

那么htmlspecialcharshtmlentities应该对HTML的输出都是安全的,因为使用UTF-7编码无法实现XSS。

请注意,这些函数不应该用于将值输出到JavaScript或CSS,因为可以输入字符,从而使JavaScript或CSS能够被转义并使您的网站处于危险之中。 请参阅XSS预防备忘单,了解如何正确处理这些情况。


我不确定你是否找到了你正在寻找的答案,但是,我也在寻找一个HTML清理工。 我有一个应用程序正在构建,希望能够使用HTML代码,甚至可能使用Javascript或其他语言,并将它们放入MySQL DB中,而不会导致问题,也不允许发生XSS问题。 我发现了HTML Purifier,它似乎是用于清理用户在PHP系统上提交的信息的最发达且仍然保持不变的工具。 链接的页面是他们的兼容页面,可以推断出为什么他们的或其他工具可能有用。 希望这可以帮助!

链接地址: http://www.djcxy.com/p/58061.html

上一篇: htmlspecialchars vs htmlentities when concerned with XSS

下一篇: Should I use new self or new static?