4

可能的重复:
在 PHP 站点中避免 xss 攻击的最佳实践是
什么?针对 XSS 的常见防御措施是什么?

我正在尝试使我编写的 PHP 应用程序安全并且对转义输出有疑问。一旦我了解到这样做可以防止 SQL 注入,我就切换到使用 PDO 的预准备语句,而且似乎另一种主要的攻击类型是 XSS。我像这样为我的页面构建输出(假设变量中有来自数据库的数据):

$output = '';

$output .= '
<div style="float: left; width: 800px;">
    <span>Name:</span><span> ' . $name . '</span>
    <span>Address:</span><span>' . $addr . '</span>
    <span>Time:</span><span>' . time() . '</span>
</div>';

$output .='[lots more html]';

所以,我的问题是,我是否应该使用htmlentities()正在输出的数据库中的每条数据(一个典型的页面有几十个,可能有数百个来自正在输出的数据库的变量)?

4

2 回答 2

3

使用有两个好处htmlentities()

  • XSS 预防
  • 将特殊字符转换为适当的 HTML 实体,例如将版权字符转换为&copy;. 在 HTML 内容中,您应该使用适当的 HTML 实体而不是插入原始特殊字符。

对于 XSS 预防,您可以htmlspecialchars()改用,但它只会将一些基本字符转换为 HTML 实体,即引号、& 和小于/大于字符。

在回答您的问题时,您应该htmlentities()在输出任何可能包含用户输入或特殊字符的内容时使用。

于 2012-11-12T14:45:53.303 回答
0

htmlspecialchars()绰绰有余。htmlentities是为了不同的用途,而不是防止 XSS。

于 2012-11-12T14:34:08.473 回答