1

我试图弄清楚保护网站免受 XSS 攻击的最小编码量是多少。

我确定我需要在标签内编码 < (<) 和 > (>),在属性内编码 " (") 和 ' (')。

我还需要编码 & (&) 吗?当用户保存数据时,我遇到了双重编码问题(因为 & 会变成 &amp;)。如果我没有对 & 符号进行编码,是否有任何安全漏洞或缺点会让人高兴?这意味着他们将能够输入他们想要的任何 HTML 实体。

通过 HTML 实体,我特别指的是与实体相对应的带有 & 前缀的序列(如 © ™)。

这个问题与语言无关(当然,HTML 部分除外)。

编辑:呵呵,stack-overflow 让我可以保留我的 html 编码实体 :) 这可能会说明问题。

4

1 回答 1

1

如果您在页面上显示这些实体,您只需要对它们进行编码(并且 & 需要像 > 和 < 一样被转义,因为它是转义序列标识符)。

如果您在使用 & 符号的双重编码时遇到问题,听起来您在将数据插入存储机制(数据库?)之前就已经这样做了。停止。您应该只在页面上显示时转义页面的数据。

于 2013-01-17T15:29:13.670 回答