可能重复:
What are the best practices for avoiding xss attacks in a PHP site
What are the common defenses against 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()
(一个典型的页面有数十个,有些可能是数百个来自数据库的变量输出)?
答案 0 :(得分:3)
使用htmlentities()
有两个好处:
©
。在HTML内容中,您应该使用适当的HTML实体,而不是插入原始的特殊字符。对于XSS预防,您可以使用htmlspecialchars()
代替,但它只会将一些基本字符转换为HTML实体,即引号,&符号和小于/大于字符。
在回答您的问题时,您应该在输出任何可能包含用户输入或特殊字符的内容时使用htmlentities()
。
答案 1 :(得分:1)
htmlspecialchars()
绰绰有余。 htmlentities
用于不同用途,不会阻止XSS。