用户输入的unicode是否存在真正的危险,这不是由用户代理/浏览器等处理的?Unicode输入危险
很明显,从服务器到客户端,有一个真正的欺骗威胁,但我试图找出具体的'攻击'(如果有的话)或对待unicode输入时应该注意的不满。
问题是语言不可知的,但我提出这个问题时要考虑GWT应用程序的安全含义。
用户输入的unicode是否存在真正的危险,这不是由用户代理/浏览器等处理的?Unicode输入危险
很明显,从服务器到客户端,有一个真正的欺骗威胁,但我试图找出具体的'攻击'(如果有的话)或对待unicode输入时应该注意的不满。
问题是语言不可知的,但我提出这个问题时要考虑GWT应用程序的安全含义。
我能想到的几个问题与用户控制的unicode字符串:
ä
可以表示为单个码点,或者可以表示为a
,然后是组合¨
。 Unicode规范化有助于抵御大部分这些问题。l
与I
的问题,除了差很多。可能有更多的问题,我肯定对Unicode的
1.这不是一个真正的“危险”,只是需要考虑的事情。如果4.是一个问题,你只是没有正确处理字符串/编码。 5.这是需要考虑的事情,这是否“危险”取决于您的语言水平如何。我同意2和3是可能导致用户问题的点。 – deceze 2012-04-26 11:30:55
这给我带来了一个后续问题,这些问题中有多少已经被像GWT这样的语言/框架内部处理过了? (例如,我正在考虑unicode标准化) – 2012-04-26 11:38:10
可能有帮助函数,但您仍需要了解大多数这些问题。它们不能自动解决。 – CodesInChaos 2012-04-26 11:44:19
与任何用户输入的最大危险是使用在具有“特殊字符”一背景下,输入没有专家。即,将它简单地连接成SQL查询或将其输出到HTML中。如果应用程序行为的一部分受字符串(如SQL查询或HTML页面)控制,并且用户可以控制这些字符串并可以注入自己的命令,那就很危险。
虽然在这方面没有什么特别的关于Unicode的其他编码。您的环境中的特殊字符已定义良好,您只需对所有用户输入进行转义,过滤或清理,以便将这些特殊字符呈现为非特殊字符。这与您需要为其他编码所做的一样。您需要注意您的转义/过滤/清理功能知道正确的编码,以便他们可以正确地完成他们的工作。
除此之外,Unicode编码的文本就是文本。当你中性化任何特殊字符并且正确处理编码时,在文本中没有危险。除了你的用户sbuıɥʇpɹıǝʍbuıʇıɹʍ或利用类似人物的特定用途,但这不是广义的危险了。
*输出*用户控制的unicode字符串可能非常成问题。但是我没有看到很多输入问题。 – CodesInChaos 2012-04-26 11:04:45
输出用户控制的unicode会遇到什么样的问题? – 2012-04-26 11:09:34