E-Mail-Adressen vor Spam-Bots schützen (2) …

Aus den weiteren Tests der Artikel-Serie „Effective methods to protect email addresses from spammers“ von Dr. David R. Nadeau ziehe ich für mich folgende Resumées:

  1. E-Mail-Adresse aufteilen (Original-Artikel)
    Die E-Mail-Adresse wird in mehrere Teile geteilt/unterteilt durch Leerstellen ( ic h @ d u . d e) oder Ersetzungen (z.B. ich at du (dot) de), etc. Diese Methoden funktionieren überwiegend gut, wenn es lediglich um die Darstellung geht, und sie können beim Lesen gut verstanden werden. Besonders interessant finde ich das Hinzufügen von HTML-Kommentaren oder -Tags (z. B. ich<!–Don’t Spam –>@<!–Don’t Spam –>du.de), da diese im Browser nicht dargestellt werden und auch von Screen-Readern ignoriert werden sollten.
    Diese Methoden können jedoch nicht für einen „mailto:“ Link (href) eingesetzt werden ;(.
  2. E-Mail-Adresse per Javascript (a) oder CSS (b) einfügen (Original-Artikel)
    Für beide Methoden gilt: Die E-Mail-Adresse muss natürlich in mehrere Teile aufgeeilt werden, sonst wird sie trotzdem gefunden. (a) kann auch bei „mailto:“ Links (href) angewendet werden, (b) nicht! Sehr gute Abwehrmethoden (solange die Bots noch kein Javascript/CSS interpretieren).
    a) Die Variablen mit den E-Mail-Teilen werden per document.write() zusammengesetzt und ausgegeben. Zusätzlich kann sie z.B. durch Unicode-Zeichencodes verschleiert oder über Ver-/Entschlüsselung geschützt werden. Alternative: Die E-Mail-Adresse wird per AJAX nachgeladen.
    Hat der Benutzer Javascript deaktiviert, bekommt er allerdings gar keine E-Mail-Adresse zu sehen.
    b) Die E-Mail-Teile werden auf zwei Klassen verteilt. Die CSS-Eigenschaft „content“ wird für die „Ausgabe“ genutzt. Die meisten (aber lange nicht alle) aktuellen Browser unterstützen diese Eigenschaft, Internet Explorer 7 (natürlich) nicht. Diese Methode ist daher zu nachteilig.
  3. E-Mail-Adressen als Grafik oder Flash einfügen (Original-Artikel)
    Die E-Mail-Adressen (oder Teile davon) werden in einer Grafik oder in einem Flash in die Seite eingebunden (nicht die E-Mail-Adresse in das „title“/“alt“ Attribut oder Dateinamen schreiben!). Sehr gute Abwehrmethoden. Flash-Textinhalte können jedoch zunehmend auch von Suchmaschinen indiziert werden, was wiederum dann auch Spam-Bots können.
    Beide Methoden können jedoch nicht für einen „mailto:“ Link (href) eingesetzt werden ;(. Zudem können sie auch nicht von Screenreadern gelesen werden oder in die Zwischenablage kopiert werden. Die Ladezeit der Seite verringert sich. Bilder können nicht entsprechend der Textgröße dynamisch skaliert werden. Für Flash ist ein Plug-In notwendig.
  4. Seiten mit E-Mail-Adressen verstecken (Original-Artikel)
    Keine (wirklich keine!) Links zu Seiten mit E-Mail-Adressen dürfen existieren, bzw. von Bots lesbar sein. Werder auf den eigenen als auch nicht auf anderen Seiten (z.B. Google)! Dies kann durch Javascript-Links oder Links in Flash gelöst werden. Alle weiteren im Artikel vorgestellten Möglichkeiten waren Null effektiv. Sehr hoher administrativer Aufwand, zudem Nachteile der Verlinkung bei deaktiviertem Javascript oder fehlendem Flash-Plug-In!
  5. Für Spammer Zugriff auf Seiten blockieren (Original-Artikel)
    a) Anhand der IP-Adresse oder des User-Agent wird ein Spam-Bot identifiziert. Beides ist nicht/schwer wartbar: IP-Adressen wechseln ständig und der User-Agent frei verfälscht werden kann.
    b) Seiten werden mit Zugangsdaten geschützt, die dem Besucher mitgeteilt werden. Alle User müssen sich authentifizieren, das ist nicht besonders benutzerfreundlich. Wird das Login kommuniziert, können manche Spam-Bots einen Auto-Login machen.
  6. Online-Kontaktformulare statt E-Mail-Adressen (Original-Artikel)
    Statt der E-Mail-Adressen darzustellen, werden Online-Kontaktformulare angeboten. Kein Spam-Bot kann die Adresse somit sehen (steht je nirgends) aber …
    Inzwischen sind genügend andere Spammer unterwegs, die das Kontakt-Formular nutzen, um dem Betreiber den Spam direkt zu senden – Kontaktformular ausfüllen, absenden, fertig. Dagegen können wiederum so genannte CAPTCHA eingesetzt werden. Zudem gibt es möglicherweise gesetzliche Regelungen, die die Angabe von E-Mail-Adressen z.B. im Impressum vorschreiben.

Gesamtresumee:
Die meisten gängigen Methoden sind gar nicht (mehr) effektiv. Weitere sind wohl nicht mehr lange effektiv, denn Spam-Bots werden nachgerüstet (insbesondere bei den unter 1 vorgestellten Methoden). Andere schränken das Nutzerverhalten/Zugänglichkeit stark ein oder funktionieren nicht in allen Browsern. Javascript scheint eine gute Methode zu sein, der Benutzer darf es aber nicht deaktivieren. CSS könnte zu einer erfolgreichen Methode werden, wenn alle Browser es unterstützen.

„The best way to protect an email address from spammers is to not publish it.“, das gilt für das Verhalten überall im WWW, nicht nur auf der eigenen Site!

Fight against Spam!

Zeichenfolgen/-mengen per Regular Expressions ausschließen

Nicht immer wird bei String-Validierungen ein Ausdruck erstellt, der nur die erlaubten Muster und Zeichen enthält. Auch anders herum ist es möglich – bestimmte Zeichenketten (?!) oder Zeichen(^) explizit ausschließen.

Zeichenfolge in einem Muster ausschließen:
.*(?!DiesesAusschliessen).*

Zeichenmenge in einem Muster ausschließen:
[^a-z0-9]

Eine Gruppierung die nicht in das Ergebnis einer Regular Expression einbezogen/selektiert werden soll, aber als Gruppierung geklammert werden muss, kann entsprechend (?:) gekennzeichnet werden:
.*(?:GruppeNichtSelekieren).*

E-Mail-Adressen vor Spam-Bots schützen (1) …

Es gibt verschiedene Schutz-Mechanismen um E-Mail-Adressen im Quelltext einer Website vor Spam-Bots zu schützen. Wie effektiv diese wirklich sind, hat Dr. David R. Nadeau in einem Test untersucht. Die Tests sind Bestandteil seiner Artikel-Serie „Effective methods to protect email addresses from spammers

In seinem 1. Test „Spam-Bots durch verschleiern der E-Mail-Adresse stoppen“ folgende Methoden getestet:

  1. Ersetzen des „@“ durch einen Zeichencode
  2. Ersetzen der ganzen Adresse durch Zeichencodes
  3. Ersetzen der Adresse in einem mailto Link mit URL-Zeichencodes
  4. Nutzung von CSS um eine umgekehrte E-Mail-Adresse zurück zu kehren
  5. Nutzung des <bdo> Tags um eine umgekehrte E-Mail-Adresse zurück zu kehren

Das Ergebnis (zusammengefasst):

E-Mail-Adressen durch ASCII-Zeichencodes zu verschleiern (1-3) ist eine verbreitete Methode, die nicht (mehr) erfolgreich wirkt.

Rückwärts geschriebene E-Mail-Adressen (4-5) werden von Spam-Bots meist (noch) nicht erkannt/erfasst. Diese Methode ist nur so lange effektiv, bis sie bekannter wird (Spam-Bots rüsten auch nach).
Zudem hat sie eine schlechte Nutzbarkeit und Zugänglichkeit. Die E-Mail-Adresse wird zwar im Browser ‚richtig‘ herum dargestellt, kann jedoch nur ‚falsch‘ herum über die Zwischenablage kopiert werden. Screenreader können diese ebenfalls nicht ‚umdrehen‘.

Empfehlung: Man sollte sich nicht auf die Verschleierung von E-Mail-Adressen verlassen. Spammer kennen diese Tricks inzwischen.

Quelle: http://www.nadeausoftware.com/articles/2007/05/stop_spammer_…

Weiterleitung von domain.tld zu www.domain.tld

Häufig zeigen die Domains domain.tld und www.domain.tld auf die selben Inhalte. Dies kann als so genannter „Dublicate Content“ gewertet werden.

Um also alle Anfragen an domain.tld auf www.domain.tld weiterzuleiten gibt es die Möglichkeit per .htaccess eine entsprechende Url-Rewrite Regel für eine 301-Weiterleitung („Moved Permanently“) einzurichten.

RewriteEngine On
RewriteCond %{HTTP_HOST} ^domain\.tld$ [NC]
RewriteRule ^(.*)$ http://www.domain.tld/$1 [R=301,L]

Eine 301-Moved-Permanently Weiterleitung weist den Client an, sich die ursprüngliche Adresse (in diesem Fall ohne „www“) nicht zu merken, sondern nur die neue Adresse!

Weitere Informationen zu HTTP Status-Codes beantwortet Wikipedia:
http://de.wikipedia.org/wiki/HTTP-Statuscode

Edit:
Das oben gelistete Rewrite kann auch allgemeiner (es muss keine Domain mehr angegeben werden) gehalten werden, in dem es wie folgt angepasst wird:

RewriteEngine On
RewriteCond %{HTTP_HOST} ^(?!www)(.+) [NC]
RewriteRule ^(.*)$ http://www.%1/$1 [R=301,L]