~/home of geeks

Email-Obfuscation

· 246 Wörter · 2 Minute(n) Lesedauer

octopus sprays dark ink, ocean ground, background coral riffs, wide shot, long shot

Für meine Homepages suchte ich nach einer einfachen Variante, meine E-Mail-Adressen für Spambots unleserlich zu machen und entdeckte eine unscheinbare, aber elegante Methode.

Die meisten Spam-Bots kriegen nur den Quellcode einer Seite zu sehen. So setzen viele der E-Mail-Obfuskatoren darauf, die Adresse verschlüsselt in der Seite abzulegen, welche bei Aufruf per Javascript die Adresse entschlüsselt.

Es scheint viele Varianten zu geben, von ROT13 bis zur URL-Kodierung des Textes. Eine sichere Verschlüsselung ohne eine Passworteingabe ist natürlich nicht möglich. So sind die meisten Algorithmen auf “Security through obscurity” ausgelegt. Einige wenige können wohl schon von Spambots entschlüsselt werden, einige andere können von Google ausgewertet werden, wo die Seite wahrscheinlich vor ihrer Auswertung durch eine Javascript-Engine ausgewertet wird.

Ein interessantes Experiment führte Silvan Mühlemann durch: Er legte Seiten mit verschieden verschlüsselten E-Mail-Adressen an und wartete 1 1/2 Jahre ab, an welcher Mail-Adresse wie viel Spam ankam.

Dabei schnitten zwei Varianten sehr gut ab, die ohne große Aufwände und hoher Usability umgesetzt werden können: CSS code-redirection (alias Bidi oder Text-Laufrichtung) und das altbewährte CSS display:none.

Bei der Text-Laufrichtung wird ein Text rückwärts aufgeschrieben und dann die Laufrichtung per CSS umgedreht.

<span style="unicode-bidi:bidi-override; direction: rtl;">!tleW ollaH</span>

Wird im Browser als “Hallo Welt!” ausgegeben. Bots, welche nicht den vollen Umfang der CSS-Befehle interpretieren können, sehen hier auch nicht den Text in umgekehrter Laufrichtung.

Kombiniert man dies auch noch mit dem display: none, entsteht im Quellcode unleserlichster Text:

<span style="unicode-bidi:bidi-override; direction: rtl;">!tleW<span style="display: none;"> eniem</span> ollaH</span>

Angezeigt wird aber weiterhin “Hallo Welt!”.