Verwechselbare Zeichen in sicheren Text normalisieren
Beim Normalisieren wird jeder Doppelgänger durch das gewöhnliche Zeichen ersetzt, das er nachahmt, damit zwei gleich aussehende Zeichenketten auch beim Vergleich gleich sind. Das lohnt sich vor dem Vergleichen von Benutzernamen, dem Abgleich mit Sperrlisten oder dem Entfernen doppelter Kennungen.
Durchgerechnetes Beispiel
- Eingabe
- Cоnfig file: аdmin2, Noёl, café
- Gefundene Schriftsysteme
- Lateinisch (Latn), Kyrillisch (Cyrl)
- Markierte Zeichen
- 7
| Position | Zeichen | Codepunkt | Schriftsystem | Ersatz | Regel |
|---|---|---|---|---|---|
| 0 | C | U+FF23 | Lateinisch | C | NFKC-Normalisierung |
| 1 | о | U+043E | Kyrillisch | o | Verwechslungstabelle |
| 7 | fi | U+FB01 | Lateinisch | fi | NFKC-Normalisierung |
| 10 | : | U+FF1A | Unbestimmt | : | Verwechslungstabelle |
| 12 | а | U+0430 | Kyrillisch | a | Verwechslungstabelle |
| 17 | 2 | U+FF12 | Unbestimmt | 2 | Verwechslungstabelle |
| 22 | ё | U+0451 | Kyrillisch | ë | Verwechslungstabelle |
- Lesbares Unicode beibehalten
- Config file: admin2, Noël, café
- Strikter ASCII-Fallback
- Config file: admin2, Noel, café
So funktioniert es
- Bekannte Doppelgänger werden zuerst anhand der mitgelieferten Tabelle ersetzt. Zeichen außerhalb der Tabelle werden mit NFKC normalisiert, das vollbreite Formen, Ligaturen und andere Kompatibilitätszeichen in ihre Standardentsprechungen überführt.
- Lesbares Unicode beibehalten behält einen Buchstaben mit diakritischem Zeichen, wenn die Tabelle einen vorsieht, etwa kyrillisches ё → ë. Strikter ASCII-Fallback verwendet stattdessen den einfachen ASCII-Buchstaben (ё → e).
- Buchstaben, die weder in der Tabelle stehen noch durch NFKC verändert werden, bleiben erhalten – café behält in beiden Modi seinen Akzent. Normalisierter Text ist ein Vergleichsschlüssel, kein Sicherheitsurteil: Bewahren Sie auch das Original auf und prüfen Sie markierte Zeichen.
Die Konvertierung erfolgt nach dem Best-Effort-Prinzip: Zugeordnete Verwechslungen und NFKC-Faltung sind deterministisch, einige legitime Unicode-Codes werden jedoch nicht gekennzeichnet.
Dein Text
Einfügen oder Tippen – die Ergebnisse werden während der Eingabe aktualisiert (leicht entprellt für lange Eingaben).
30 Zeichen geprüft
7 verdächtig
Strikter ASCII-Fallback
Original (verdächtige Zeichen markiert)
Verdächtige Zeichen in der Originalansicht werden unterstrichen und mit „susp“ gekennzeichnet. zusätzlich zur Hervorhebungsfarbe.
suspicious character Csuspicious character оnfig suspicious character filesuspicious character : suspicious character аdminsuspicious character 2, Nosuspicious character ёl, café
Gereinigte Ausgabe
Zeichenanalyse
| Index (0-basiert) | Original | Ersatz | Codepunkt | Grund |
|---|---|---|---|---|
| 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. |