したがって、XSSフィルタリングをテストするためのXSSチートシートがありますが、悪意のあるページの例以外に、UTF-8コードが動作不良のデータを処理できることを確認するための悪質なまたは不正なテストデータを見つけることができません。
テストに適したデータはどこにありますか?悪いデータはどこにありますか?または、トリッキーな文字のシーケンスとは何ですか?
~𝘈Ḇ𝖢𝕯٤ḞԍНǏ𝙅ƘԸⲘ𝙉০Ρ𝗤Ɍ𝓢ȚЦ𝒱Ѡ𝓧ƳȤѧᖯć𝗱ễ𝑓𝙜Ⴙ𝞲𝑗𝒌ļṃʼnо𝞎𝒒ᵲꜱ𝙩ừ𝗏ŵ𝒙𝒚ź1234567890!@#$%^&*()-_=+[{]};:'",<.>/?
〜АḂⲤ𝗗𝖤𝗙ꞠꓧȊ𝐉𝜥ꓡ𝑀𝑵Ǭ𝙿𝑄Ŗ𝑆𝒯𝖴𝘝𝘞ꓫŸ𝜡ả𝘢ƀ𝖼ḋếᵮℊ𝙝Ꭵ𝕛кιṃդⱺ𝓅𝘲𝕣𝖘ŧ𝑢ṽẉ𝘅ყž1234567890!@#$%^&*()-_ = + [{]}; : '"、<。> /?~Ѧ𝙱ƇᗞΣℱԍҤ١𝔍К𝓛𝓜ƝȎ𝚸𝑄Ṛ𝓢ṮṺƲᏔꓫ𝚈𝚭𝜶Ꮟçძ𝑒𝖿𝗀ḧ𝗂𝐣ҝɭḿ𝕟𝐨𝝔𝕢ṛ𝓼тú𝔳ẃ⤬𝝲𝗓1234567890!@#$%^&*()-_=+[{]};:'",<.>/?
〜𝖠Β𝒞𝘋𝙴𝓕ĢȞỈ𝕵ꓗʟ𝙼ℕ0Ρ𝗤ՀꓢṰǓⅤ𝔚Ⲭ𝑌𝙕𝘢𝕤
回答:
Markus KuhnのUTF-8デコーダストレステストを確認してください
漢字を含むファイルは、文字ごとに使用するバイト数をどのようにして知るのですか?も参照してください。—間違いなく、他にも役立つ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標準では、最後の3つの選択肢は最小限ではないため、受け入れられないことが明確に規定されています。バイト0xC0と0xC1が有効なUTF-8に表示されないことがあるのは、これらによってエンコードされる可能性のある文字のみが、範囲0x00..0x7Fのシングルバイト文字として最小限にエンコードされるためです。
Basic Multi-lingual Plane(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では完全に不要です。
いくつかのもありますnoncharactersユニコードでは。U + FFFEとU + FFFFはそのような2つの非文字です(そして各平面の最後の2つのコードポイント、U + 1FFFE、U + 1FFFF、U + 2FFFE、U + 2FFFF、... U + 10FFFE、U + 10FFFFは他のものです) )。これらは通常、データ交換のためにUnicodeデータに表示されるべきではありませんが、個人使用で表示される可能性があります。Unicodeの非文字のかなり複雑な履歴を含む多くの厳格な詳細については、Unicode FAQリンクを参照してください。(2013年1月にリリースされたCorrigendum#9:Clarification About Noncharactersは、そのタイトルが示唆することを行います—非文字の意味を明確にします。)
あなたは使用することができますジェフリーBergaminiからこの便利なオンラインツールを Homoglyphsの本当に奇妙なUTF8文字列に任意のテキストを変換します。
典型的な
Lorem ipsum dolor sit amet、consectetur adipiscing ellit、sed do eiusmod tempor incididunt ut Laber et dolore magna aliqua。
このようになります:
Ḽơᶉëᶆȋṕšᶙṁḍỡḽǭᵳʂǐťӓṁệẗ、ĉṓɲṩḙċťᶒțûɾấɖḯƥĭṩčįɳġḝłįʈ、șếᶑᶁⱺẽḭŭŝḿꝋďṫĕᶆᶈṓɍỉñḉīḑȋᵭṵńťṷŧḹẩḇőꝛếéȶđꝍꞎôꝛȇᵯáꞡᶇāąⱡîɋṹẵ。
ウィキペディアのUTF-8記事には、どのバイトシーケンスが有効/無効であるかについての良い要約があります。読む価値のあるもう1つの記事は、W3C I18N FAQ:Multilingual Formsです。