因此,我们有XSS备忘单来测试XSS过滤-但是除了示例性的良性页面之外,我找不到任何邪恶或格式错误的测试数据来确保我的UTF-8代码可以处理行为异常的数据。
我在哪里可以找到一些很好的数据来进行测试?或什么是棘手的字符序列?
因此,我们有XSS备忘单来测试XSS过滤-但是除了示例性的良性页面之外,我找不到任何邪恶或格式错误的测试数据来确保我的UTF-8代码可以处理行为异常的数据。
我在哪里可以找到一些很好的数据来进行测试?或什么是棘手的字符序列?
~𝘈Ḇ𝖢𝕯٤ḞԍНǏ𝙅ƘԸⲘ𝙉০Ρ𝗤Ɍ𝓢ȚЦ𝒱Ѡ𝓧ƳȤѧᖯć𝗱ễ𝑓𝙜Ⴙ𝞲𝑗𝒌ļṃʼnо𝞎𝒒ᵲꜱ𝙩ừ𝗏ŵ𝒙𝒚ź1234567890!@#$%^&*()-_=+[{]};:'",<.>/?
〜АḂⲤ𝗗𝖤𝗙ꞠꓧȊ𝐉𝜥ꓡ𝑀𝑵Ǭ𝙿𝑄Ŗ𝑆𝒯𝖴𝘝𝘞ꓫŸ𝜡ả𝘢ƀ𝖼ḋếᵮℊ𝙝Ꭵ𝕛кιṃդⱺ𝓅𝘲𝕣𝖘ŧ𝑢ṽẉ𝘅ყž1234567890!@#$%^&*()-_ = + [{]}; :'“,<。> /?~Ѧ𝙱ƇᗞΣℱԍҤ١𝔍К𝓛𝓜ƝȎ𝚸𝑄Ṛ𝓢ṮṺƲᏔꓫ𝚈𝚭𝜶Ꮟçძ𝑒𝖿𝗀ḧ𝗂𝐣ҝɭḿ𝕟𝐨𝝔𝕢ṛ𝓼тú𝔳ẃ⤬𝝲𝗓1234567890!@#$%^&*()-_=+[{]};:'",<.>/?
〜𝖠Β𝒞𝘋𝙴𝓕ĢȞỈ𝕵ꓗʟ𝙼ℕ০𝚸𝗤ՀꓢṰǓⅤ𝔚Ⲭ𝑌𝙕𝘢𝕤–
Answers:
另请参见具有汉字的文件如何知道每个字符要使用多少个字节?—毫无疑问,还有其他SO问题也将有所帮助。
在UTF-8中,您获得以下字节类型:
Binary Hex Comments
0xxxxxxx 0x00..0x7F Only byte of a 1-byte character encoding
10xxxxxx 0x80..0xBF Continuation bytes (1-3 continuation bytes)
110xxxxx 0xC0..0xDF First byte of a 2-byte character encoding
1110xxxx 0xE0..0xEF First byte of a 3-byte character encoding
11110xxx 0xF0..0xF4 First byte of a 4-byte character encoding
(最后一行看起来应该读为0xF0..0xF7;但是,Unicode的21位范围(U + 0000-U + 10FFFF)表示最大有效值为0xF4;值0xF5..0xF7不会出现在有效的UTF-8。)
查看特定的字节序列是否有效的UTF-8意味着您需要考虑:
在有效的UTF-8中,字节0xF5..0xFF不会出现。
一些字符可能有多种表示形式。例如,Unicode字符U + 0000(ASCII NUL)可以表示为:
0x00
0xC0 0x80
0xE0 0x80 0x80
0xF0 0x80 0x80 0x80
但是,Unicode标准明确规定了后三种选择不是可接受的,因为它们不是最小的。碰巧字节0xC0和0xC1永远不会出现在有效的UTF-8中,因为只有那些可以被它们编码的字符才被最小编码为0x00..0x7F范围内的单字节字符。
在基本多语言平面(BMP)中,Unicode值U + D800-U + DFFF保留给UTF-16替代,不能以有效的UTF-8编码显示。如果它们在UTF-8中有效(我强调,它们不是有效的),则将对替代进行编码:
因此,您的BAD数据应包含违反这些规定的样本。
请注意,字节序标记(BOM)U + FEFF,也就是零宽度不间断空格(ZWNBSP),不能在UTF-8中未编码显示-有效的UTF-8中不允许字节0xFF和0xFE。编码的ZWNBSP可以在UTF-8文件中显示为0xEF 0xBB 0xBF,但是BOM在UTF-8中是完全多余的。
Unicode中也有一些非字符。U + FFFE和U + FFFF是两个这样的非字符(每个平面中的最后两个代码点U + 1FFFE,U + 1FFFF,U + 2FFFE,U + 2FFFF,... U + 10FFFE,U + 10FFFF是其他)。这些通常不应出现在Unicode数据中以进行数据交换,而可以私下使用。有关许多肮脏的细节,包括Unicode中非字符的相当复杂的历史记录,请参见Unicode FAQ链接。(2013年1月发布的勘误9:关于非字符的澄清,如其标题所述—阐明了非字符的含义。)
您可以使用Jeffrey Bergamini提供的这种方便的在线工具将任何文本转换为真正奇怪的UTF8象形文字字符串。
典型的
Lorem ipsum dolor坐镇,奉献自若,sius do eiusmod tempor incididunt ut Labore et dolore magna aliqua。
变成这样:
ӓṁệẗᶆᶙṁᶙṁӓṁệẗӓṁệẗӓṁệẗḉįɳġḉḉįʈįʈįʈḉḉꞡᶇꞡᶇꞡᶇꞡᶇꞡᶇꞡᶇꞡᶇꞡᶇ。
Wikipedia的UTF-8文章很好地总结了哪些字节序列有效/无效。另一本值得阅读的文章是W3C I18N常见问题解答:多语言形式。