Php html值属性中的htmlspecalchars是否足以阻止xss?
Php html值属性中的htmlspecalchars是否足以阻止xss?,php,html,xss,Php,Html,Xss,htmlspecialchars()是防止XSS攻击HTML元素属性的简单方法吗 例如,在这个输入元素中,使用htmlspecialchars()编码引号是否能确保完全安全从逻辑上看,它似乎可以阻止任何字符串脱离value属性的上下文;还是还有更多的事情可以做 <input type="text" value="<?php echo htmlspecialchars($dangerousString, ENT_QUOTES, 'UTF-8'); ?>" 假设您使用的是现代版本
htmlspecialchars()
是防止XSS
攻击HTML
元素属性的简单方法吗
例如,在这个输入元素中,使用htmlspecialchars()
编码引号是否能确保完全安全从逻辑上看,它似乎可以阻止任何字符串脱离value属性的上下文;还是还有更多的事情可以做
<input type="text" value="<?php echo htmlspecialchars($dangerousString, ENT_QUOTES, 'UTF-8'); ?>"
假设您使用的是现代版本的php,htmlspecialchars
应该可以做到这一点
需要注意的是,您还必须通过标题和元标记为整个页面提供相同的编码(utf8
)。否则,你就要受到惩罚
还要注意的是,htmlspecialchars
仅适用于不解释javascript的属性,如value
。对于src
和朋友来说,这还不够。文本输入字段的值与xss保护有什么关系?在表单字段重新填充用户在表单验证失败后输入的数据的情况下。在没有保护的情况下,字符串以“>可以结束属性和元素。仅在文本输入中输入文本是不可能的。它需要相应地操作DOM。这意味着攻击者已经具有脚本访问权限,因此为时已晚。@arkascha-你没有抓住要点。文本在HTTP请求中。PHP正在读取它并将其放入HTML中。这就是XSS通常的工作方式。@Sam-我想是的,但是UTF-7 bug之类的东西可能会带来复杂性,所以我不是100%确定。