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%确定。