符号是:ؤ
这个符号有什么特别之处,它来自哪里?
可以采取哪些措施来验证此类输入?或者甚至更好,这些符号如何正确显示(即不让它们与其他元素重叠)?
好吧,因为它似乎并不像我想象的那样微不足道,这是我的答案.
这称为组合变音符号.
举个例子,你可以ä
直接写一个或者ä
以"ä"结果.
现在你可以搞砸这样的标志:"ä̈̈̈̈̈̈",我输入了: ä̈̈̈̈̈̈
为了保护自己免受这种"unicode"攻击,你可以限制允许相互跟随的unicode字符的数量.我不能给你一个确切的例子,因为你的标签没有提供有关你的服务器端语言的提示.如果您有一个简单的英文网站,您可能会尝试将其限制为ascii chars.但是我不推荐这个,因为我不允许用我的名字签名:-)
我只会将Unicode字符的数量限制在彼此之后.这可能是用正则表达式完成的.
如果您只是想避免Unicode字符"突破"其容器尝试使用,这似乎限制了它的呈现方式.
我只是将符号复制到SQL Server和Visual Studio,发现符号已转换为
所以它看起来像浏览器无法识别的?
(看起来像阿拉伯符号)符号的组合.
符号是阿拉伯语Hamza符号.
IE也正确解释了相同的符号.
所以看起来有些浏览器无法识别符号.
编辑:
要验证此类输入通常您可以使用某种排序验证(比如使用户只能输入ASCII字符)使用Javascript或PHP等语言,您可以通过这些语言限制用户根据您的选择输入字符.
或者甚至更好,如何正确显示这些符号
如果浏览器无法将符号渲染为您显示的符号,那么作为一种解决方法,您可以对这些字符设置一些限制,例如将它们放在div中,overflow:auto
但这不是一个好的解决方案.更好的方法是使用验证脚本.
奇怪的是,在屏幕上你只会看到一个字符后跟一条从无处绘制的线条.
但是当用chrome检查时,它实际上是第一个字符的字符Unicode 1572
,后面跟着161个字符画线Unicode 1618
!之后就是Unicode (or ASCII code) 32
空间.