Webkrauts Logo

Webkrauts Webkrauts Schriftzug

- für mehr Qualität im Web

Spamsichere E-Mail-Adressen mit dem »Email Address Encoder«

Wir haben noch nicht alle älteren Artikel nachbearbeitet. Das bezieht sich in der Regel nur auf die Codebeispiele, die noch nicht optimal dargestellt werden.

Spamsichere E-Mail-Adressen mit dem »Email Address Encoder«

Eine in Klartext im Netz veröffentlichte E-Mail-Adresse zieht Spam an wie das Licht die Mücken. Matthias Mees zeigt eine einfache, aber wirksame Methode, die Email-Adressen in Textform oder als Link zu schützen.

Neben einem Kontaktformular sollten Kontaktseiten auch immer eine E-Mail-Adresse enthalten. Eine in Klartext oder als mailto-Link im Netz veröffentlichte E-Mail-Adresse ist jedoch leichte Beute für die Crawler von Adressen-Sammlern im Netz.

Verschiedene Maßnahmen, E-Mail-Adressen zu »verschleiern«, sind jedoch aus unterschiedlichen Gründen oft nicht praktikabel oder schlicht nicht barrierefrei. Ersetzt man zum Beispiel die Textform einer E-Mail-Adresse durch eine entsprechende Grafik, können Screenreader scheitern. Auch lässt sich die E-Mail-Adresse dann nicht mehr »mal eben« ins Adressbuch des Mailprogramms kopieren.

Lösungsansatz: Numerische Notation

Eine einfache und doch wirksame Methode ist es, E-Mail-Adressen durch ihre dezimalen character entities auszuzeichnen. Dabei ersetzt man jedes Zeichen einer E-Mail-Adresse durch seine numerische Notation nach ISO 10646 (deckungsgleich mit dem Unicode-Standard) in Dezimalform.

Aus

<a href="mailto:example@example.com">example@example.com</a>

wird dadurch im Quelltext der Seite

<a href="mailto:&#121;&#111;&#117;&#114;&#110;&#097;&#109;
&#101;&#064;&#100;&#111;&#109;&#097;&#105;&#110;
&#046;&#099;&#111;&#109;">&#121;&#111;&#117;
&#114;&#110;&#097;&#109;&#101;&#064;&#100;&#111;
&#109;&#097;&#105;&#110;&#046;&#099;&#111;
&#109;</a>

Derartig kodierte E-Mail-Adressen und mailto-Links werden von Webbrowsern immer noch problemlos korrekt in Textform dargestellt und sind benutzbar, sollten jedoch zumindest vor automatisierten Adressen-Sammlern sicher sein. Der softwareseitig notwendige Aufwand zur »Entschlüsselung« ist hier scheinbar schlicht zu hoch.

Absolute Sicherheit gibt es nicht

Auch wenn diese Methode natürlich keineswegs eine hundertprozentig sichere Lösung ist, sollte sie doch zumindest weitestgehend vor unerwünschten E-Mails schützen, und das bei halbwegs vertretbarem Aufwand. Das Problem wird zudem »an der Wurzel gepackt«, sprich: Es wird versucht zu verhindern, dass die betreffende E-Mail-Adresse überhaupt erst bespammt wird.

Natürlich möchte man die Umwandelung in numerische Notation nicht »von Hand« machen müssen. Ein bequemes Webinterface zur Umwandlung bietet etwa der Email Address Encoder.

Kommentare

Nils Hörrmann
am 07.12.2009 - 09:02

Ich habe jetzt mal eine dumme Frage: Wenn es ein "bequemes Webinterface" zum konvertieren der normalen E-Mail-Adresse in die numerische Notation gibt, wie kann es dann sein, dass im Gegenzug der "softwareseitig notwendige Aufwand zur 'Entschlüsselung' [...] hier scheinbar schlicht zu hoch" ist? Die verwendeten Entitäten sind ja bekannt (siehe W3C-Link) - ein Konverter sollte daher sogar ziemlich schnell zu schreiben sein.

Das habe ich an dieser Technik noch nie begriffen: Sie ist für uns Menschen schwer zu lesen, aber Computer sollten die letzten sein, die hiermit Probleme haben.

Bitte korrigiert mich, wenn grundsätzlich falsch liege.

Permanenter Link

Jeena Paradies
am 07.12.2009 - 09:07

Ähm naja,

Der softwareseitig notwendige Aufwand zur "Entschlüsselung" ist hier scheinbar schlicht zu hoch.

Ich weiß ja nicht wer dir das erzählt hat aber das was du da schreibst ist einfach nicht richtig.

require "cgi"
string = 'yourname [at] domain.com (yourname@domain.com)'
print CGI::unescapeHTML(string)

Gibt mir einfach

<a href="mailto:yourname [at] domain.com"%gt;yourname [at] domain.com</a>

aus, und ich bin gottweiß kein Spam-Crawler Programmierer. Und ich bin mir ziemlich sicher dass ein solcher automatisch diese Methode nutzt, ich sehe auch keinen Grund warum man es anders machen sollte.

Meiner Meinung nach muss man da an der anderen Seite ansetzen, einfach einen guten Filter einsetzen dann stört der Spam nicht und alles ist barierefrei und so.

Permanenter Link

Manuel
am 07.12.2009 - 09:13

Moin,

ich denke der Grund liegt einfach darin, dass es im Netz mehr als genügend E-Mail Adressen gibt die nicht "verschlüsselt" sind, sodass sich die Crawler bzw. dessen Programmierer gar nicht die Mühe machen die (im Vergleich) wenigen verschlüsselten E-Mail Adressen zu entschlüsseln.

Ich denke wäre diese Methode auf 50% aller Internetseiten oder mehr, würde das anders aussehen ;)

Permanenter Link

webfalter
am 07.12.2009 - 09:21

Eine anderer Ansatzpunkt wäre die Umkehrung der Reihenfolge Zeichen über CSS: Die Emailadresse wird spiegelverkehrt im HTML Code abgebildet und in der Ansicht via CSS wieder richtig herum angezeigt.

Permanenter Link
Gerrit van Aaken

Gerrit van Aaken (Webkraut)
am 07.12.2009 - 09:26

Ich glaube nicht an diese Art der "Verschlüsselung". Nur die sehr, sehr dümmlich programmierten Crawler werden die trivialst umzusetzende "Entschlüsselung" nicht schon längst in ihr Repertoire aufgenommen haben. Schaden tut’s zwar sicher nicht, aber man sollte seinen Kunden keinen ernstzunehmenden Effekt in Aussicht stellen.

Permanenter Link

Manuel
am 07.12.2009 - 09:31

Naja ich habe die Erfahrung gemacht das diese Art von Verschlüsselung doch enorm hilft.

Klar ist es kein 100% Schutz in keiner Spamliste aufzutauchen, aber es ist ja schon schön wenn man ein paar % der Crawler so abhalten kann, so seine E-Mail Adresse aufzunehmen.

...Natürlich ersetzt es keinen sonstigen Spamschutz.

Permanenter Link

micha149
am 07.12.2009 - 09:33

Nils Bedenken sind absolut berechtigt. Klar kann man einen Encoder für derart verschlüsselte E-Mailadressen in kurzer Zeit schreiben. Wie Manuel aber schon richtig erkannt hat, wird sich niemand die Mühe machen. Für die Spammer die wirklich so gerissen sind, sollte jeder noch einen Spamfilter in der Hinterhand haben.

Was ich an diesem Artikel sehr gut finde ist der generelle Ansatz. Viele entfernen einfach den Link, ersetzen das @ mit tollen Konstrukten, oder machen irgendwelchen Hokuspokus mit Javascript. Alles in allem verschlechtert aber die Bedienbarkeit und die Zugänglichkeit der Daten. Hier sollte man sich aber auf den Sinn der Sache konzentrieren und das ist Matthias Mees mit dieser Lösung gelungen.

Permanenter Link
Christian Heilmann

Christian Heilmann (Webkraut)
am 07.12.2009 - 10:02

Jeder crawler der was auf sich haelt kann das. Ich hab mitlerweile bemerkt das ein Formular mehr spam anzieht als textlinks - klar, man kann ja auch sich dann an XSS versuchen.

Email Adressen verschluesseln ist Zeitverschwendung. Besser in einen Spamfilter auf dem email server investieren anstatt den Endnutzer zu nerven.

Permanenter Link

Matthias Mees
am 07.12.2009 - 10:32

Ich kann in der Tat (als Nicht-Coder) nicht erklären, warum diese Methode meinen Erfahrungwerten zufolge "funktioniert". Durchaus denkbar, dass die "Aufmerksamkeit" in dem Bereich heute eher Formularen als Textlinks gilt.

Natürlich ist ein vernünftiger serverseitiger Spamfilter vorzuziehen, gerade bei wirklich großen Sites. Aber für Paranoiker mit kleinen Sites ist dieser Ansatz definitiv besser als all die unsäglichen "Lösungen", die man leider immer noch in der "Wildnis" antrifft -- "(at)" und C&P-untaugliche Grafiklinks.

Permanenter Link
Eric Eggert

Eric Eggert (Webkraut)
am 07.12.2009 - 10:33

Dieser Kommentar stammt von Jeena Paradies (per E-Mail, da Wordpress mit Problemen):

Ähm naja,

Der softwareseitig notwendige Aufwand zur "Entschlüsselung" ist hier scheinbar schlicht zu hoch.

Ich weiß ja nicht wer dir das erzählt hat aber das was du da schreibst ist einfach nicht richtig.

require "cgi"
string = '<a href="mailto:&#121;&#111;&#117;&#114;&#110;&#097;&#109;&#101;&#064;&#100;&#111;&#109;&#097;&#105;&#110;&#046;&#099;&#111;&#109;">&#121;&#111;&#117;&#114;&#110;&#097;&#109;&#101;&#064;&#100;&#111;&#109;&#097;&#105;&#110;&#046;&#099;&#111;&#109;</a>';
print CGI::unescapeHTML(string)

Gibt mir einfach

<a href="mailto:yourname [at] domain.com">yourname [at] domain.com</a>

aus, und ich bin gottweiß kein Spam-Crawler Programmierer. Und ich bin mir ziemlich sicher dass ein solcher automatisch diese Methode nutzt, ich sehe auch keinen Grund warum man es anders machen sollte.

Meiner Meinung nach muss man da an der anderen Seite ansetzen, einfach einen guten Filter einsetzen dann stört der Spam nicht und alles ist barierefrei und so.

Permanenter Link

Torsten
am 07.12.2009 - 10:56

Die Methode ist copy&paste-fähig, der Mail-Link ist weiterhin klickbar und trotzdem werden womöglich ein paar Spammer abgehalten - also warum sollte man es nicht einsetzen? Auf statischen Seiten, die eh vom Webworker betreut werden hat der Endnutzer keine Nachteile, da er damit gar nicht in Berührung kommt und in einem CMS kann das Ganze per Plugin umgesetzt werden.

Was ich mich frage ist warum nicht auch das "mailto:" mit verschlüsselt wird. Und warum nicht dezimal/hexadezimal durchgemischt wird.

Hier ein Online-Tool dafür:
http://www.ianr.unl.edu/email/encode/

Permanenter Link

Ingo
am 07.12.2009 - 11:04

Spambots sind heute in der Lage selbst Captchas mittels immer besserer Texterkennung zu knacken. Die Verschlüsselung mittels Entities stellt da überhaupt keine Hürde mehr da. Einfach mal nach "Email Harvester" googlen. Die Produktbeschreibungen sprechen Bände.

Permanenter Link

Bertram Simon
am 07.12.2009 - 12:13

Ich benutze lieber meine Javascript-Verschlüsselung:

http://xoc.de/html2javascript.php

Da kann man immer noch im NoScript-Bereich einen barrierefreien Hinweis schreiben.

Permanenter Link

Boris
am 07.12.2009 - 12:13

Eine Möglichkeit, die noch sicherer ist, wäre die Verschlüsselung von Hivelogic:

http://hivelogic.com/enkoder/form

Der Aufwand, das zu entschlüsseln, ist enorm - und daher sehr effektiv. Barrierefrei ist das logischerweise nicht, da es auf JavaScript aufbaut.

Permanenter Link

Gunnar Bittersmann
am 07.12.2009 - 12:25

Es werden wohl wirklich nur die dümmsten Spambots darauf hereinfallen und keine numerischen Zeichenentities auflösen können. (BTW, die Terminologie „dezimale character entities“ ist nicht richtig. Entities sind sowas wie 'auml' und 'quot'; 'ä' und '"' sind Zeichen-Entity-Referenzen. 'ä' und '"' sind keine Entity-Referenzen, sondern numerische Zeichenreferenzen. [ESCAPES])

Das Argument, dass es Spammern genügt, die unzähligen nicht-escapeten E-Mail-Adressen von Webseiten auszulesen und deshalb gar keine Spambots einsetzen, die Zeichenreferenzen auflösen, zieht auch nicht mehr so richtig. Spammer nutzen längst andere Methoden als Webseiten abzugrasen, um an E-Mail-Adressen zu kommen, so dass man heutzutage wohl schon wieder seine E-Mail-Adresse ganz normal auf seiner Seite veröffentlichen kann. Das macht die ganze Escaperei schon fraglich.

Und dann fand ich Ingo Turskis Methode, E-Mail-Adressen vor Spam-Robots zu schützen, dann doch interessanter.

Permanenter Link

Gunnar Bittersmann
am 07.12.2009 - 12:37

Grmpf, da spreche ich von Escapes und vergesse, hier '&' zu escapen! Neuer Versuch:

Entities sind sowas wie 'auml' und 'quot'; '&auml;' und '&quote;' sind Zeichen-Entity-Referenzen. 'ä' und '"' sind keine Entity-Referenzen, sondern numerische Zeichenreferenzen. [ESCAPES]

Permanenter Link
Marcel Böttcher

Marcel Böttcher
am 07.12.2009 - 13:26

Ich denke das größte Problem ist die Überschrift, die wirkliche spamsicherheit suggeriert. Es ist sicherlich nicht schlecht, wenn man seine E-Mail sowieso in klartext irgendwo platzieren will.

Permanenter Link

Jens Martsch
am 07.12.2009 - 15:12

Es ist eine Fehlannahme, dass man durch die Verschlüsselung oder Nichtnennung von E-Mail-Adressen wirklich Spam vermeiden könnte.

Spammer verschicken sobald sie einen Domainnamen haben einfach mal an die Standard-Adressen wie postmaster@, webmaster@, info@ usw. Ihren Spam und diese Adressen sind ja bei vielen Hostern Standard.

Zudem wäre auch noch eine einfache Kombination aus einem Lexikon von Vor- und Nachnamen denkbar und dann wird einfach mal munter verschickt (wenn diese Technik auch nicht besonders effizient ist)

Das Harvesten ist doch viel zu aufwendig, wenn man so eine einfache Möglichkeit hat.

Permanenter Link
Stefan David

Stefan David (Webkraut)
am 07.12.2009 - 15:54

Ich kann mich da Jens nur anschließen. Meine Erfahrung mit etlichen im Klartext veröffentlichten E-Mail-Adressen und Catch-All für alle Adressen auf meinen Domains zeigt, dass an die echten Adressen exakt die gleiche Menge Spam verschickt wird wie an irgendwelche willkürlich gewählten. Gerade jüngere Adressen (bzw. welche auf jüngeren Sites) bekommen kaum Spam ab. Diese Form der Adressensammlung war früher offensichtlich beliebter als heute.

Die einzigen Adressen, die langfristig stärker bespammt werden, sind welche, die ich früher mal in irgendwelchen Foren verwendet habe. Unsichere Forensoftware ist offensichtlich ein viel lohnenderes Feld für E-Mail-Harvester als das Crawlen von Websites.

Wer die obige Methode einsetzen möchte, kann es gern tun, sollte sich aber keinen Illusionen hingeben. Es ist aber allemal besser als der immer wieder zu sehende Einsatz von Grafiken statt der E-Mail-Adresse oder gleich anstelle des gesamten Impressums. Das ist nicht nur nicht barrierefrei sondern auch gegen geltendes Recht auf Seiten mit Impressumspflicht.

Permanenter Link

domingos
am 07.12.2009 - 20:05

nur so als Hinweis, man spricht in diesem Fall nicht von Verschlüsselung, sondern von Steganographie, nicht zu verwechseln mit Stenographie. Steganographie ist das Verstecken bzw. Kaschieren von Informationen. Die Zeichen werden durch Äquivalente ersetzt, sollen für den Menschen aber sichtbar, für den Bot unsichtbar sein, werden also hinter Zeichen versteckt.
Die Website ist leider bestenfalls ein kleines Einfallstor für Spam. Ich habe zwei Adressen, die ich regelmäßig benutze, die eine steht seit Jahren im netz, die andere hat nie im Netz gestanden. Bei letzterer kriege ich mehr Spam. Entweder ist die Adresse von jemandem verkauft worden, bei dem ich irgend welche Waren bestellt habe. Oder, was ich auch vermute, das Outlook-Adressbuch von jemandem, wo ich drin stehe, ist gehackt worden. Oder beides.
Das einzige, was wirklich brauchbar ist: mehere E-Mail-Adressen verwenden, konsequent auf Spamfilter setzen und sämtliche E-Mails nach Whitelist filtern. Filter schützen einen sehr gut vor Viren.

Permanenter Link

Bert Kößler
am 07.12.2009 - 21:06

Ganz toll finde ich auch dieses verbreitete Konstrukt:


<a href="mailto:name [at] domain.de">name(at)domain.de</a>

Nicht C&P-fähig und kein Schutz vor Crawlern. :D

Permanenter Link

drwitt
am 07.12.2009 - 21:41

Ich spare mir die Verschlüsselungstechniken komplett. Immer wieder erlebe ich, dass Kunden bei einer neuen Webseite ängstlich nach Spam fragen, weil man ja immer soviel Schlechtes liest. Ich argumentiere dann gerne, dass die Filtertechnik in quasi allen modernen E-Mail-Programmen als ausgereift gelten kann und man daher von Spam in Wirklichkeit gar nichts mehr mitbekommt. Naja, und Viren... viele Hoster bieten ja auch Scanner an, die Virenmails gleich verwerfen. Und der Rest ist dann dickes Fell: Irgendeine Mail nicht bekommen? Egal, wenn ich weiß, dass ich mein Adressbuch mit Whitelist im Griff habe. Und seriöse potentielle Kunden benutzen auch eine seriöse E-Mail-Adresse und können sich ordentlich ausdrücken, dann klappts auch mit der Blacklist und dem Geschäftlichen. Und das hat noch jedem Kunden eingeleuchtet, Einbrüche in den Geschäftszahlen sind nicht berichtet worden.

Permanenter Link

Thomas108
am 08.12.2009 - 08:20

Mir wäre das alleine langfristig zu unsicher. Ich bin übrigens seit 2003 komplette spamfrei und habe da auch mal eine Anleitung dazu verfasst:

http://www.homepage-individuell.de/blog/spamfreie-e-mail

Ich benutze Javascript Verschlüsselung mit einem Fallback aus Unicode, allerdings habe ich den Unicode zusätzlich noch in ltr Richtung verfasst und wandle ihn per CSS wieder in rtl um.

Permanenter Link

Extra300Pilot
am 08.12.2009 - 12:29

Ich bin erstaunt, das diese Beitrag erst im Dezember 2009 als Spamsicher den Weg ins Netz geschafft hat. Das ist doch ein alter Hut. Diese Lösung hält kaum noch einen Spambot auf.

Das erste mal bin ich glaube ich 2003 auf diese Möglichkeit gestoßen und Crawler konnten das recht schnell wieder umgehen. Wie einfach das zu machcen ist, hat Eric Eggert weiter oben ja schön ausgeführt :-) Ebenfalls eher nervig als nützlich sind diese oft sogar für Anwender unleserlichen, überflüssigen Captchas (Userfeindlicher geht´s kaum noch, ich erwische mich immer dabei, spätestens beim zweiten erfolglosen Versuch mit geschwollenem Kamm die Seiten zu verlassen, die so einen Schwachsinn ihren Usern zumuten).

Alles nur scheinbare Sicherheit. Wie viele meiner Vorredner schon sagten, eine gut konfigurierte Anti-Spam-Software/Virenscanner (die ein guter Provider schon von Haus aus mitliefert) sind da eher hilfreich. Im Bereich von Freemailern haut man seine Adresse eben einfach in die Tonne, falls das Spamfilter konfigurieren irgendwann mehr Arbeit macht, als das manuelle löschen von Spammails.

Ich benutze für Foren einfach Wegwerf-Adressen. Sollte sich der Umfang an Spam erhöhen, hau ich die Adresse weg und ändere sie in Stamm-Foren bis sie wieder vollgemüllt werden. Ganz ohne Spam gehts bei Free-Mailern eh nicht. Die Adresse in meiner Website ist bisher komischerweise so selten vollgemüllt (zur Domain gehörige Adresse) das ich ebenfalls denke, das Foren, Social-Network-Sites die größten Verursacher vollgemüllter Adressen sind. Einige davon existieren nur aus dem einen Grunde, eine bewerbbare Adresse zu ergaunern. Einfach mal die AGBs genau lesen dann stößt man oft auf Sätze wie diesen "Mit Beitritt auf XYZ.de erlauben Sie, XYZ.de Ihnen hin und wieder interessante Neuigkeiten und Angebote unserer Kooperationspartner zuzusenden." spätestens dann sollten jedem klar sein, wie sich eine solche Seite finanziert - genau - durch Adressenverkauf!

Mir ist das aber recht Latte. Da Spammer immer wieder Möglichkeiten finden eine Adresse zu benutzen, ist mir der Aufwand, jedesmal den Filter anzupassen einfach zu lästig, das dauert genauso lange wie das manuelle löschen der Spammails und Wegwerfadressen haben bei mir eine recht kurze Halbwertszeit.

So long
Extra300Pilot

Permanenter Link

Michael
am 09.12.2009 - 20:00

Über die tatsächliche Effizienz der mehr oder weniger bekannten Methoden der Verschlüsselung von E-Mail-Adressen gab es vor knapp einem Jahr auf Dr.Web einen sehr aufschlußreichen Artikel:

http://www.drweb.de/magazin/wirklich-wirksamer-schutz-fr-e-mail-adressen/

Die Verschlüsselung von Hivelogic habe ich gerade heute selber entdeckt.

Permanenter Link

Die Kommentare sind geschlossen.