gpt4 book ai didi

html - 在用户提交的数据中不转义 & 符号是否存在安全风险?

转载 作者:搜寻专家 更新时间:2023-10-31 08:04:05 25 4
gpt4 key购买 nike

在显示用户生成/提交的信息时,转义其他特殊字符但不修改与号是否存在任何安全风险?我想让我的用户自由输入 html 实体、十六进制和十进制特殊字符,而不给我的 sanitizer 程序增加不必要的复杂性。

最佳答案

这完全取决于数据放入的上下文。

在 HTML 中,表示普通 & 的主要原因通过字符引用是 avoid ambiguity作为 &也是这种字符引用的开始。这种歧义的一个流行示例是普通的 &作为 HTML 属性中 URL 参数的一部分,如下所示:

<a href="/?lang=en&sect=foobar">

这里是 &未使用相应的字符引用进行适当编码,因此解析器将其视为字符引用的开头。因为 sect 是一个 known entity in HTML , 代表节字符 § , 这个属性值实际上被解释为 /?lang=en§=foobar .

所以留下一个平原&因为它不像 HTML 中的其他特殊字符那样容易造成实际威胁,因为它们可以更改数据放入的上下文:

  • 标签定界符<>可以开始或结束标签声明,
  • 属性值分隔符"'可以开始或结束属性值声明。

为了安全起见,你应该使用 htmlspecialchars double_encode 参数设置为 false避免对已经存在的字符引用进行双重编码:

var_dump(htmlspecialchars('<"&amp;\'>', ENT_QUOTES, 'UTF-8', false) === '&lt;&quot;&amp;&#039;&gt;'); // bool(true)

关于html - 在用户提交的数据中不转义 & 符号是否存在安全风险?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11027167/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com