WordPress-Plugin: CSS Email Obfuscator

Wer kennt das nicht: Das Impressum oder die Kontaktseite erfordern die Angabe eurer E-Mail-Adresse, doch ihr drückt euch davor sie im korrekten Format oder überhaupt niederzuschreiben. Zu groß ist die Gefahr künftig mit Spam überhäuft zu werden. Viele behelfen sich deswegen obskurer E-Mail-Formate, bei dem etwa das @-Zeichen durch „at“ oder der Punkt durch „dot“ ausgetauscht wird. Andere setzen stattdessen lieber auf JavaScript um ihre E-Mail-Adresse zu verschleiern. Doch es geht auch eleganter: Mit dem WordPress-Plugin CSS Email Obfuscator.

Warum „at“ und „dot“ nicht helfen

E-Mail-Adressen werden von Bots eingesammelt, die sehr ähnlich funktionieren wie z.B. der Google Bot. Dabei besucht ein solcher Bot diverse Webseiten und hält nach allem Ausschau, was wie eine E-Mail-Adresse aussieht. Da E-Mail-Adressen immer einem bestimmten Format folgen, wird mit Hilfe von regulären Ausdrücken nach ihnen gesucht. Vereinfacht läßt sich sagen: Der Bot sucht nach allem was in der Mitte ein @ und am Ende einen Punkt, gefolgt von einer begrenzten Anzahl von Zeichen, hat.

Nun sind auch die Entwickler solcher Bots nicht auf den Kopf gefallen und wissen natürlich, dass viele ihre E-Mail-Adresse eben mit „at“ statt @ und „dot“ statt Punkt angeben. Also wird der reguläre Ausdruck kurzerhand um diese beiden Möglichkeiten erweitert. Ergebnis: Der Bot findet eure „verschleierte“ E-Mail-Adresse dennoch.

JavaScript zu Hilfe?

An dieser Stelle gibt es von mir ein ganz klares Nein. Wer JavaScript dafür missbraucht seine E-Mail-Adresse zu verschleiern, der isst auch kleiner Kinder. Zum einen ist es einfach nicht sonderlich elegant und zum anderen können Screenreader kein JavaScript interpretieren. Menschen mit Handicap bleiben also bei solch einer Lösung außen vor.

Auftritt: CSS (und PHP)

Bei der von mir bereitgestellten Lösung verwende ich PHP um die E-Mail-Adresse bereits serverseitig zu verschleiern. Dabei wird die Zeichenkette per strrev() umgekehrt und anschließend im Browser mit Hilfe der CSS-Anweisung direction wieder korrekt herum angezeigt. Ganz ohne JavaScript!

Verwendung des WordPress-Plugin

Das Plugin kann ab sofort über das offizielle Plugin-Repository heruntergeladen werden. Nach erfolgter Installation aktiviert ihr es im Backend unter PluginsInstallierte Plugins. Danach könnt ihr, mit Hilfe einer der folgenden drei Shortcodes, E-Mail-Adressen in Beiträgen, Seiten und Custom Post Types vor Bots verschleiern:

Nur E-Mail-Adresse

[css-email-obfuscator]you@example.com[/css-email-obfuscator]

E-Mail-Adresse mit Link (klickbar)

E-Mail-Adresse mit Link und eigenem Text

[css-email-obfuscator mailto="yes" email="you@example.com"]Contact me[/css-email-obfuscator]

6 Comments

  1. Die Lösung ist auch nicht wirklich super. Wer hindert mich so eine art von email wieder umzukehren? Dann lieber direkt ein Bild generieren. Oder falls es doch text bleiben soll – alle Buchstaben komplet vermischen und einzeln absolut per CSS positionieren (das passende CSS muss natürlich on-the-fly mitgeneriert werden)

    Reply
    • Einen Menschen hindert natürlich nichts daran die Buchstaben wieder umzukehren, den Bot jedoch schon: Denn Bots sind darauf programmiert effektiv zu sein, also möglichst viele E-Mail-Adressen von möglichst vielen Seiten zu „grabben“.

      Niemand verschwendet die CPU-Zeit seines Bots, um zu überprüfen ob die E-Mail-Adresse verkehrt herum geschrieben wurde, was mit regulären Ausdrücken auch grundsätzlich nicht möglich ist. Das ist nur von Hand möglich, denn wie soll der Bot überprüfen ob es sich um eine Kauderwelsch-Adresse handelt oder eine „richtige“ Adresse, die nur verkehrt herum geschrieben wurde? Hier wäre einzig eine Wörterbuch-Angriff möglich, der extrem CPU-lastig ist und sich für den „Gewinn“ einer einzelnen E-Mail-Adresse überhaupt nicht lohnt.

      Beispiel 1: Der Bot kommt auf Deine Website, durchsucht sie mit dem regulären Ausdruck und findet deine richtige Adresse. Er grabbt sie, du bekommst Spam per E-Mail.

      Beispiel 2: Der Bot kommt auf Deine Website durchsucht sie mit dem regulären Ausdruck und findet deine umgekehrte Adresse. Er grabbt sie, die Spam E-Mails laufen ins Leere.

      Beispiel 3: Ist der Bot in seinem regulären Ausdruck darüber hinaus auch noch strikt (die meisten sind tatsächlich „lazy“, tendieren also zu weniger CPU-Zeit, nehmen dafür ein paar Fehlversendungen in Kauf), so sucht er nicht nach [benutzer]@[domain] sondern nach [benutzer]@[domain].[tld] und findet bei einer E-Mail-Adresse ohne Punkt im Benutzer überhaupt kein Match. Ergo kommt Deine Adresse noch nicht mal in die Datenbank.

      Die von Dir vorgeschlagene Lösung ist zwar prinzipiell in Ordnung, aber viel zu aufwendig wenn es nur darum geht Bots auszusperren.

      Reply
  2. Stimmt auch bedingt. Wenn ich so einen bot schreiben würde, werde ich den Fall mit umgekehrter Reihenfolge prüfen, so fiel CPU kostet es nicht. Es kommt definitiv ins alle crowler rein so bald diese Art von Sicherung stärker verbreitert wird. Aber du hast wiederrum Recht – es ist die Frage von Aufwendigkeit: je aufwendige ich mich sichere, desto schwieriger wird mich zu knacken und umgekehrt. Deine Sicherungsmethode ist sehr einfach zu beseitigen, sein Zweck wird aber auch bedingt erfühlen 🙂

    Reply
    • Machen wir doch ’ne Challenge draus: Ich gebe dir 5 zufällige E-Mail-Adressen und Du programmierst einen Bot der erkennt ob eine E-Mail-Adresse umgekehrt angegeben wurde. Es dürfen keine statischen Methoden verwendet werden, sondern nur Algorithmen und reguläre Ausdrücke. Ich bin gespannt!

      Reply

Hinterlasse einen Kommentar