Top 10 測試目標極端值

文字極端

這些字元在文字裡合法,在識別字、通知與證據裡各有各的破壞方式。碼位都寫在下面,因為多數看不見。

10 個危險值值也在 JSON-LD 裡

值與它會弄壞什麼

零寬空格 U+200B肉眼看不見。混進 SKU 就是另一個 SKU,而人看不出差別。
RTL override U+202E把後面的文字反向顯示。可以讓 gpj.exe 看起來像 exe.jpg
組合重音 U+0301e+U+0301 與 U+00E9 外觀相同、位元組不同。未經 NFC 正規化,雜湊就不同。
西里爾 а U+0430與拉丁 a 外觀相同、碼位不同。域名與品牌仿冒的手法。
ZWJ 序列 U+200D一個家庭 emoji 是七個碼位。以字元數截斷會切出無效序列。
星際平面字元 U+1D54F在 UTF-16 是兩個單位。slice 切一半會產生亂碼。
超長字串兩千字的標題。存進 evidence、放進通知、寫進主旨都需要上限。
控制字元 U+0000、U+001B寫進日誌會破壞終端輸出,寫進 CSV 會破壞欄位。
雙向文字混排阿拉伯數字與中文混排時,顯示順序與儲存順序不同。
CJK 相容表意文字 U+FA10與其標準對應字外觀相同、碼位不同——相容字是為了向下相容舊字集而保留的重複編碼。未經 NFKC/相容正規化,字串比對會判定成不同字,即使人眼完全看不出差異。

平台必須不做的事

不得在未正規化的情況下比較字串,也不得把控制字元原樣寫進通知、日誌或匯出檔。

取值

抓頁面/jsonld/0/observed/ 之下
結構化來源同目錄的 unicode.json