【发布时间】:2014-04-12 01:32:17
【问题描述】:
对于XSS safety,我想将所有字符转换为\u+hex 编码。我见过UTF-16 solutions,但找不到任何适用于 UTF-8 的内容。
我首先要确保所有字符都是 UTF-8。在这里,我看到了许多解决方案,但对于 javascript 来说没有什么一致的。
如何对字符串进行 UTF-8 测试,如果是则返回 \u+hex 编码,否则返回 false?
【问题讨论】:
-
我不太确定你是否理解这里的含义。如何确保输入是 UTF-8 来保护您免受注射?在另一个问题中,您说“我想在任何地方注入东西”——坦率地说,安全地做到这一点是不可能的(实际上,可能跨越)。
-
JS 中的字符串由字符组成,而不是字节。字符纯粹是一种概念性的东西,而字节是物理存储在磁盘上或通过线路传输的数字。这意味着,就程序员而言,没有编码。您不能测试字符串的编码。
-
@Gracchus:也许我没有正确理解这一点,但所有这些听起来都非常错误。如果注入 HTML 内容,则需要将特殊字符转换为 HTML 实体;如果内容在打开的标签或属性值内,您还需要防止脚本攻击等。编码检查无法阻止这些。
-
@Gracchus:我感觉我不太明白你的问题。也许您应该提供更多上下文,即您的字符串来自哪里以及它们应该去哪里。另外,Brian McGinity 是谁?
标签: javascript utf-8 character-encoding hex typechecking