用户输入unicode是否存在任何真正的危险,用户代理/浏览器等无法处理?
显然,从服务器到客户端,存在欺骗的真正威胁,但我正在试图弄清楚在处理unicode输入时我应该注意哪些具体的“攻击”(如果有的话)或不满。
问题是语言不可知,但我在考虑GWT应用程序的安全隐患时提出这个问题。
答案 0 :(得分:5)
任何用户输入的最大危险是在具有“特殊字符”的上下文中使用该输入。即,将其简单地连接到SQL查询或将其输出到HTML中。如果应用程序的一部分行为是由字符串(如SQL查询或HTML页面)控制的,并且用户可以控制这些字符串并且可以注入自己的命令,则存在危险。
然而,在这方面,Unicode与其他编码没有什么特别之处。您环境中的特殊字符已明确定义,您只需要对任何用户输入进行转义,过滤或清理,以便将这些特殊字符呈现为非特殊字符。对于任何其他编码,您也需要这样做。您需要注意您的转义/过滤/清理功能是否知道正确的编码,以便他们能够正常工作。
除此之外,Unicode编码文本只是文本。当你中性包含任何特殊字符并正确处理编码时,只有文本没有危险。除了你的用户sbuıɥʇpɹıǝʍbuıʇıɹʍ或为某些特定目的利用相似的角色,但这不再是关于普遍的危险。
答案 1 :(得分:4)
我可以想到用户控制的unicode字符串存在的几个问题:
ä
可以表示为单个代码点,也可以表示为a
,后跟组合¨
。 Unicode规范化有助于解决大多数这些问题。l
vs I
问题,除了更糟糕的情况。可能还有更多问题,我当然不是unicode的专家