Homoglyphen in Domains, Benutzernamen und Nachrichten erkennen
Ein Homoglyph ist ein Zeichen, das wie ein anderes, vertrauteres aussieht: Das kyrillische а (U+0430) und das lateinische a (U+0061) sind in den meisten Schriftarten identisch, aber verschiedene Codepunkte. Der Detektor prüft jedes Zeichen und listet jeden Doppelgänger mit Position, Codepunkt, Unicode-Schriftsystem und dem nachgeahmten Zeichen auf.
Durchgerechnetes Beispiel
- Eingabe
- pаypаl.com / Αdmіn
- Gefundene Schriftsysteme
- Lateinisch (Latn), Kyrillisch (Cyrl), Griechisch (Grek)
- Markierte Zeichen
- 4
| Position | Zeichen | Codepunkt | Schriftsystem | Ersatz | Regel |
|---|---|---|---|---|---|
| 1 | а | U+0430 | Kyrillisch | a | Verwechslungstabelle |
| 4 | а | U+0430 | Kyrillisch | a | Verwechslungstabelle |
| 13 | Α | U+0391 | Griechisch | A | Verwechslungstabelle |
| 16 | і | U+0456 | Kyrillisch | i | Verwechslungstabelle |
- Lesbares Unicode beibehalten
- paypal.com / Admin
So funktioniert es
- Jedes Zeichen wird mit einer mitgelieferten Tabelle häufiger kyrillischer, griechischer, lateinischer und vollbreiter Doppelgänger abgeglichen. Ein Treffer wird zusammen mit dem nachgeahmten ASCII-Buchstaben, der Ziffer oder dem Satzzeichen markiert.
- Zeichen, die nicht in der Tabelle stehen, durchlaufen die Unicode-Normalisierung NFKC. Ändert NFKC sie – etwa bei vollbreiten Buchstaben oder Ligaturen wie fi –, werden sie als Kompatibilitätsformen markiert.
- Positionen zählen Unicode-Codepunkte ab 0. Ein Wort, das lateinische mit kyrillischen oder griechischen Buchstaben mischt, ist ein deutliches Warnsignal, denn echte Wörter wechseln selten mittendrin das Schriftsystem.
Die Konvertierung erfolgt nach dem Best-Effort-Prinzip: Zugeordnete Verwechslungen und NFKC-Faltung sind deterministisch, einige legitime Unicode-Codes werden jedoch nicht gekennzeichnet.
Einfügen oder Tippen – die Ergebnisse werden während der Eingabe aktualisiert (leicht entprellt für lange Eingaben).
Verdächtige Zeichen in der Originalansicht werden unterstrichen und mit „susp“ gekennzeichnet. zusätzlich zur Hervorhebungsfarbe.
| Index (0-basiert) | Original | Ersatz | Codepunkt | Grund |
|---|---|---|---|---|
| 0 | p | p | U+0070 | Not flagged as a confusable or compatibility character. |
| 1 | а | a | U+0430 | Non-ASCII confusable mapped to a safer Latin ASCII equivalent. |
| 2 | y | y | U+0079 | Not flagged as a confusable or compatibility character. |
| 3 | p | p | U+0070 | Not flagged as a confusable or compatibility character. |
| 4 | а | a | U+0430 | Non-ASCII confusable mapped to a safer Latin ASCII equivalent. |
| 5 | l | l | U+006C | Not flagged as a confusable or compatibility character. |
| 6 | . | . | U+002E | Not flagged as a confusable or compatibility character. |
| 7 | c | c | U+0063 | Not flagged as a confusable or compatibility character. |
| 8 | o | o | U+006F | Not flagged as a confusable or compatibility character. |
| 9 | m | m | U+006D | Not flagged as a confusable or compatibility character. |
| 10 | U+0020 | Not flagged as a confusable or compatibility character. | ||
| 11 | / | / | U+002F | Not flagged as a confusable or compatibility character. |
| 12 | U+0020 | Not flagged as a confusable or compatibility character. | ||
| 13 | Α | A | U+0391 | Non-ASCII confusable mapped to a safer Latin ASCII equivalent. |
| 14 | d | d | U+0064 | Not flagged as a confusable or compatibility character. |
| 15 | m | m | U+006D | Not flagged as a confusable or compatibility character. |
| 16 | і | i | U+0456 | Non-ASCII confusable mapped to a safer Latin ASCII equivalent. |
| 17 | n | n | U+006E | Not flagged as a confusable or compatibility character. |