Normalisasi karakter yang membingungkan menjadi teks aman
Menormalkan karakter yang membingungkan berarti mengganti setiap tiruan dengan karakter biasa yang ditirunya, sehingga dua string yang tampak sama juga dianggap sama saat dibandingkan. Lakukan ini sebelum membandingkan nama pengguna, mencocokkan daftar blokir, atau menghapus ID duplikat.
Contoh langkah demi langkah
- Masukan
- Cоnfig file: аdmin2, Noёl, café
- Aksara yang ditemukan
- Latin (Latn), Sirilik (Cyrl)
- Karakter yang ditandai
- 7
| Posisi | Karakter | Titik kode | Aksara | Pengganti | Aturan |
|---|---|---|---|---|---|
| 0 | C | U+FF23 | Latin | C | Normalisasi NFKC |
| 1 | о | U+043E | Sirilik | o | Tabel karakter mirip |
| 7 | fi | U+FB01 | Latin | fi | Normalisasi NFKC |
| 10 | : | U+FF1A | Umum | : | Tabel karakter mirip |
| 12 | а | U+0430 | Sirilik | a | Tabel karakter mirip |
| 17 | 2 | U+FF12 | Umum | 2 | Tabel karakter mirip |
| 22 | ё | U+0451 | Sirilik | ë | Tabel karakter mirip |
- Pertahankan Unicode yang Dapat Dibaca
- Config file: admin2, Noël, café
- Penggantian ASCII yang ketat
- Config file: admin2, Noel, café
Cara kerjanya
- Tiruan yang dikenal diganti lebih dulu berdasarkan tabel bawaan. Karakter di luar tabel dinormalkan dengan NFKC, yang mengubah bentuk lebar penuh, ligatur, dan karakter kompatibilitas lain menjadi padanan standarnya.
- Mode Pertahankan Unicode yang Dapat Dibaca mempertahankan huruf beraksen jika tabel mendefinisikannya, misalnya ё Kiril → ë. Mode Penggantian ASCII yang ketat memakai huruf ASCII biasa sebagai gantinya (ё → e).
- Huruf yang tidak ada di tabel dan tidak diubah NFKC tetap dipertahankan, jadi café tetap beraksen di kedua mode. Teks yang dinormalkan adalah kunci pembanding, bukan putusan keamanan: simpan juga teks aslinya dan tinjau karakter yang ditandai.
Konversi adalah upaya terbaik: kebingungan yang dipetakan dan pelipatan NFKC bersifat deterministik, tetapi beberapa Unicode yang sah tidak akan ditandai.
Teks Anda
Tempel atau ketik — hasil diperbarui saat Anda mengetik (sedikit di-debounce untuk input yang panjang).
30 karakter dipindai
7 mencurigakan
Penggantian ASCII yang ketat
Asli (karakter mencurigakan ditandai)
Karakter mencurigakan dalam tampilan asli digarisbawahi dan diberi label “susp.” selain menonjolkan warna.
suspicious character Csuspicious character оnfig suspicious character filesuspicious character : suspicious character аdminsuspicious character 2, Nosuspicious character ёl, café
Keluaran yang dibersihkan
Analisis karakter
| Indeks (berbasis 0) | Asli | Penggantian | Poin kode | Alasan |
|---|---|---|---|---|
| 0 | C | C | U+FF23 | NFKC normalization changed this character (compatibility or width folding). |
| 1 | о | o | U+043E | Non-ASCII confusable mapped to a safer Latin ASCII equivalent. |
| 2 | n | n | U+006E | Not flagged as a confusable or compatibility character. |
| 3 | f | f | U+0066 | Not flagged as a confusable or compatibility character. |
| 4 | i | i | U+0069 | Not flagged as a confusable or compatibility character. |
| 5 | g | g | U+0067 | Not flagged as a confusable or compatibility character. |
| 6 | U+0020 | Not flagged as a confusable or compatibility character. | ||
| 7 | fi | fi | U+FB01 | NFKC normalization changed this character (compatibility or width folding). |
| 8 | l | l | U+006C | Not flagged as a confusable or compatibility character. |
| 9 | e | e | U+0065 | Not flagged as a confusable or compatibility character. |
| 10 | : | : | U+FF1A | Non-ASCII confusable mapped to a safer Latin ASCII equivalent. |
| 11 | U+0020 | Not flagged as a confusable or compatibility character. | ||
| 12 | а | a | U+0430 | Non-ASCII confusable mapped to a safer Latin ASCII equivalent. |
| 13 | d | d | U+0064 | Not flagged as a confusable or compatibility character. |
| 14 | m | m | U+006D | Not flagged as a confusable or compatibility character. |
| 15 | i | i | U+0069 | Not flagged as a confusable or compatibility character. |
| 16 | n | n | U+006E | Not flagged as a confusable or compatibility character. |
| 17 | 2 | 2 | U+FF12 | Non-ASCII confusable mapped to a safer Latin ASCII equivalent. |
| 18 | , | , | U+002C | Not flagged as a confusable or compatibility character. |
| 19 | U+0020 | Not flagged as a confusable or compatibility character. | ||
| 20 | N | N | U+004E | Not flagged as a confusable or compatibility character. |
| 21 | o | o | U+006F | Not flagged as a confusable or compatibility character. |
| 22 | ё | e | U+0451 | Non-ASCII confusable mapped to a safer Latin ASCII equivalent. |
| 23 | l | l | U+006C | Not flagged as a confusable or compatibility character. |
| 24 | , | , | U+002C | Not flagged as a confusable or compatibility character. |
| 25 | U+0020 | Not flagged as a confusable or compatibility character. | ||
| 26 | c | c | U+0063 | Not flagged as a confusable or compatibility character. |
| 27 | a | a | U+0061 | Not flagged as a confusable or compatibility character. |
| 28 | f | f | U+0066 | Not flagged as a confusable or compatibility character. |
| 29 | é | é | U+00E9 | Not flagged as a confusable or compatibility character. |