그래서 우리는 XSS 필터링을 테스트하기 위한 XSS 치트 시트 를 가지고 있습니다. 그러나 무해한 예제 페이지 외에는 내 UTF-8 코드가 잘못 작동하는 데이터를 처리 할 수 있는지 확인하기 위해 악의적이거나 잘못된 테스트 데이터를 찾을 수 없습니다.
테스트 할 좋은 음 .. 나쁜 데이터를 어디에서 찾을 수 있습니까? 또는 까다로운 문자 시퀀스는 무엇입니까?
그래서 우리는 XSS 필터링을 테스트하기 위한 XSS 치트 시트 를 가지고 있습니다. 그러나 무해한 예제 페이지 외에는 내 UTF-8 코드가 잘못 작동하는 데이터를 처리 할 수 있는지 확인하기 위해 악의적이거나 잘못된 테스트 데이터를 찾을 수 없습니다.
테스트 할 좋은 음 .. 나쁜 데이터를 어디에서 찾을 수 있습니까? 또는 까다로운 문자 시퀀스는 무엇입니까?
~𝘈Ḇ𝖢𝕯٤ḞԍНǏ𝙅ƘԸⲘ𝙉০Ρ𝗤Ɍ𝓢ȚЦ𝒱Ѡ𝓧ƳȤѧᖯć𝗱ễ𝑓𝙜Ⴙ𝞲𝑗𝒌ļṃʼnо𝞎𝒒ᵲꜱ𝙩ừ𝗏ŵ𝒙𝒚ź1234567890!@#$%^&*()-_=+[{]};:'",<.>/?! ~ АḂ Ⲥ𝗗𝖤𝗙 ꞠꓧȊ𝐉Κꓡ𝑀𝑵Ǭ𝙿𝑄Ŗ𝑆𝒯𝖴𝘝𝘞ꓫŸΖả𝘢ƀ𝖼ḋếᵮℊ𝙝 Ꭵ𝕛 кιṃ դ ⱺ𝓅𝘲𝕣𝖘ŧ𝑢ṽẉ𝘅 ყ ž1234567890 @ # $ % ^ & * () -_ = + [{]}; : ' ", <.> /? ~Ѧ𝙱ƇᗞΣℱԍҤ١𝔍К𝓛𝓜ƝȎ𝚸𝑄Ṛ𝓢ṮṺƲᏔꓫ𝚈𝚭𝜶Ꮟçძ𝑒𝖿𝗀ḧ𝗂𝐣ҝɭḿ𝕟𝐨𝝔𝕢ṛ𝓼тú𝔳ẃ⤬𝝲𝗓1234567890!@#$%^&*()-_=+[{]};:'",<.>/?~ 𝖠Β𝒞𝘋𝙴𝓕ĢȞỈ𝕵ꓗʟ𝙼ℕ0Ρ𝗤 Հꓢ ṰǓⅤ𝔚 Ⲭ𝑌𝙕𝘢𝕤
답변:
참조 : 중국 문자의 파일이 문자 당 사용하는 방법 바이트 알고 있나요 어떻게? — 의심 할 여지없이 도움이 될 다른 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로 읽어야하는 것처럼 보이지만 유니 코드의 21 비트 범위 (U + 0000-U + 10FFFF)는 최대 유효 값이 0xF4임을 의미합니다. 값 0xF5..0xF7은 유효한 UTF-8.)
특정 바이트 시퀀스가 유효한 UTF-8인지 여부를 살펴보면 다음을 고려해야합니다.
유효한 UTF-8에서는 0xF5..0xFF 바이트가 발생할 수 없습니다.
일부 문자에 대해 여러 가지 가능한 표현이 있습니다. 예를 들어 유니 코드 문자 U + 0000 (ASCII NUL)은 다음과 같이 나타낼 수 있습니다.
0x00
0xC0 0x80
0xE0 0x80 0x80
0xF0 0x80 0x80 0x80
그러나 유니 코드 표준은 마지막 세 가지 대안이 최소가 아니기 때문에 허용되지 않는다고 명시하고 있습니다. 따라서 0xC0 및 0xC1 바이트는 유효한 UTF-8로 표시 될 수 없습니다. 이들로 인코딩 할 수있는 유일한 문자는 0x00..0x7F 범위의 단일 바이트 문자로 최소 인코딩되기 때문입니다.
BMP (Basic Multi-lingual Plane) 내에서 유니 코드 값 U + D800-U + DFFF는 UTF-16 서로 게이트 용으로 예약되어 있으며 유효한 UTF-8로 인코딩되어 표시 될 수 없습니다. 그들이 UTF-8에서 유효하다면 (내가 강조하지만, 그렇지 않다면) 대리 물은 인코딩 될 것입니다 :
따라서 BAD 데이터에는 이러한 다양한 처방을 위반하는 샘플이 포함되어야합니다.
바이트 순서 표시 (BOM) U + FEFF (ZWNBSP (zero-width no-break space)라고도 함)는 UTF-8로 인코딩되지 않은 상태로 나타날 수 없습니다. 0xFF 및 0xFE 바이트는 유효한 UTF-8에서 허용되지 않습니다. 인코딩 된 ZWNBSP는 UTF-8 파일에 0xEF 0xBB 0xBF로 나타날 수 있지만 BOM은 UTF-8에서 완전히 불필요합니다.
유니 코드 에는 문자가 아닌 일부도 있습니다 . U + FFFE 및 U + FFFF는 이러한 두 가지 비 문자입니다 (각 평면의 마지막 두 코드 포인트, U + 1FFFE, U + 1FFFF, U + 2FFFE, U + 2FFFF, ... U + 10FFFE, U + 10FFFF는 기타입니다. ). 일반적으로 데이터 교환을 위해 유니 코드 데이터에 표시되지 않아야하지만 개인 용도로 표시 될 수 있습니다. 유니 코드가 아닌 문자의 다소 복잡한 역사를 포함하여 많은 세부 사항은 유니 코드 FAQ 링크를 참조하십시오. ( 2013 년 1 월에 출시 된 Corrigendum # 9 : Clarification About Noncharacters 는 제목이 암시하는대로 비 문자의 의미를 명확히합니다.)
Jeffrey Bergamini의이 편리한 온라인 도구를 사용 하여 텍스트를 정말 이상한 UTF8 동형 문자 문자열로 변환 할 수 있습니다.
전형적인
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut laboure et dolore magna aliqua.
다음과 같이됩니다 :
Ḽơᶉëᶆ ȋṕšᶙṁ ḍỡḽǭᵳ ʂǐť ӓṁệẗ, ĉṓɲṩḙċťᶒţûɾ ấɖḯƥĭṩčįɳġ ḝłįʈ, şếᶑ ᶁⱺ ẽḭŭŝḿꝋď ṫĕᶆᶈṓɍ ỉñḉīḑȋᵭṵńť UT ḹẩḇőꝛế éȶ đꝍꞎôꝛȇ ᵯáꞡᶇā ąⱡîɋṹẵ.
Wikipedia의 UTF-8 기사 에는 유효한 / 유효하지 않은 바이트 시퀀스에 대한 좋은 요약이 있습니다. 읽을 가치가있는 또 다른 기사는 W3C I18N FAQ : Multilingual Forms 입니다.