Glengamoi (Forum) · AspHeute · .NET Heute (RSS-Suche) · AspxFiles (Wiki) · .NET Blogs

Mailadressen schützen

Geschrieben von: Stefan Mayer
Kategorie: ASP Tricks

This printed page brought to you by AlphaSierraPapa

Gästebücher und Diskussionsforen sind immer öfter Ziele von eMail-Spidern. Sie werden als unerschöpfliche Datenquelle für Spammings diverser besonders "seriöser" Firmen mißbraucht. Aber auch simple Kontaktadressen auf Homepages sind sehr beliebt, weil diese mit hoher Wahrscheinlichkeit auch gelesen werden. Um sich vor Spammings zu schützen, sollte man daher seine Mailadresse nirgendwo hinterlassen. Trotzdem will und kann man nicht immer darauf verzichten - ganz besonders auf Kontaktseiten. Ziel meines Vorhabens - und somit auch dieses Artikels - ist es, eine Variante anzubieten, die es ermöglicht, Mailadressen bestmöglich vor Mißbrauch zu schützen und trotzdem einen größtmöglichen Komfort für die Besucher der Webseiten zu bieten.

Gleich vorweg - einen 100%igen Schutz wird es nie geben. Selbst wenn man die Mailadressen grafisch an den Browser sendet, so besteht immer noch die Möglichkeit, daß die Adressen abgeschrieben werden oder einzeln kopiert werden. Ich bin jedoch bemüht, es Spidern so schwer wie möglich zu machen.

Der Artikel Broken Links mit Link Sleuth erfassen enthält eine Beschreibung eines Freeware-Spiders, der komplette Webs nach Hyperlinks aller Art durchsuchen kann - auch nach eMail-Adressen. Diese lassen sich zwar nicht so leicht exportieren, aber trotzdem habe ich in weiterer Folge mit diesem Programm gearbeitet, um meinen Erfolg zu testen, bzw. um auf eine genauere Funktionsbeschreibung eines anderen Programms verzichten zu können.

Mailadressen im Klartext

...
<br>
Hier können Sie mit uns <a href="mailto:Stefan.mayer@e-box.at">in Kontakt treten</a>
<br>
...

Öffne ich nun diese Seite mit Xenu erhalte ich folgenden Output:

Die Mailadresse wurde als solche erkannt. Ist ja auch kein Wunder, der Klammeraffe hat sie verraten. So schreiben es zumindest einige Fachzeitschriften für Webdesigner oder Internetprofis. Dort wird vorgeschlagen, das @ zu ersetzen, auf daß es nicht mehr erkannt wird. Das kann man tun, in dem man stattdessen &#64; schreibt. Der Browser wird das Zeichen verstehen und einen gültigen Mail-Link daraus machen. Ich probiere es einfach aus:

...
<br>
Hier können Sie mit uns <a href="mailto:Stefan.mayer&#64;e-box.at">in Kontakt treten</a>
<br>
...

Lasse ich Xenu an die Seite, erhalte ich jedoch ein recht ähnliches Ergebnis:

Tja, offenbar sind auch einfache Spiderprogramme genauso schlau wie Webbrowser - auf jeden Fall schlauer als so mancher Fachjournalist. Die meisten Spider achten auf das <a href="mailto:...

Aber auch dafür gibt es Abhilfe. Die Idee ist die, daß der Browser keinen HTML-Code mit dem Mail-Link erhält, sondern ein Script, das den Mail-Link erstellt. Das sieht zum Beispiel so aus:

...
<br>
Hier können Sie mit uns 
<script language="javascript">
document.write("<a href='mailto:stefan.mayer");
document.write("@");
document.write("e-box.at'>");
document.write("in Kontakt treten");
document.write("</a>");
</script>
<br>
...

Und siehe da - Xenu bekommt Probleme:

Warum wird die Mailadresse nun nicht erkannt? Sie befindet sich in einem Javascript, das von den meisten Spidern ignoriert wird, und zusätzlich ist sie über mehrere Kommandos verteilt, sodaß auch mit einer reinen Suche nach *@*.* keine Mailadresse gefunden werden kann.

Dieser Mechanismus wirkt jetzt vielleicht etwas unübersichtlich und aufwendig, darum habe ich im nächsten Abschnitt ein ASP-Script vorbereitet, das eine gewisse Hilfestellung anbietet und sich leicht in bestehende Gästebücher, Forensysteme, etc. einbinden lässt.

Die Vollautomatik

Gleich vorweg, die Funktion sieht so aus:

<%
Function WriteMail(email, text)
 isOK = False
 p = InStr(email, "@")
 If p > 0 Then
  e1 = Left(email,p-1)
  e2 = Mid(email,p+1)
  strOut = "document.write(""<a href='mailto:" & e1 & """);document.write(""@"");" & _
      "document.write(""" & e2 & "'>"");"
  p = InStr(text, "@")
  IsOK = True
  If p > 0 Then
   e1 = Left(email,p-1)
   e2 = Mid(email,p+1)
   strOut = strOut & "document.write(""" & e1 & """);document.write(""@"");" & _
       "document.write(""" & e2 & "</a>"");"
  Else
   strOut = strOut & "document.write(""" & text & """);document.write(""</a>"");"  
  End If
 End If
 If IsOK Then 
  WriteMail = "<script language=""javascript"">" & strOut & "</script>" 
 Else 
  WriteMail = "-"
 End If
End Function
%>

Zur Erklärung: Der Funktion WriteMail werden zwei Parameter übergeben - die Mailadresse sowie ein Text, der angezeigt werden soll. Zuerst wird die Mailadresse nach dem berühmten @ durchsucht. Wird das Zeichen gefunden, so kann der String in 2 Teile zerlegt werden - in e1, dem Teil davor und in e2, der Domäne. Ohne @ handelt es sich um keine gültige Mailadresse

Im nächsten Schritt wird der Text ebenfalls durchsucht und gegebenenfalls wie die Mailadresse in 3 Teile erlegt. Das ist notwendig, denn es könnte ja vorkommen, daß die Mailadresse auch im Klartext angezeigt werden soll.

Abschließend wird das so erstellte Javascript als Funktionswert zurückgegeben - oder ein "-", falls keine gültige Mailadresse übergeben wurde.

Der Aufruf der Funktion erfolgt so:

...
<br>
Hier können Sie mit uns <%=WriteMail("stefan.mayer@e-box.at","in Kontakt treten")%>
<br>
...

Oder wenn die Daten aus einer Datenbank kommen:

...
<% While Not rs.eof %>
...
<td><%=WriteMail(RS.Fields("email").Value, RS.Fields("Anrede").Value)%></td>
...
<% rs.MoveNext
Wend %>
...

Schlußbemerkung

Dieser doch relativ einfache Trick bietet zwar keinen 100%igen Schutz vor Mißbrauch, er macht es den Übeltätern jedoch recht schwer.

This printed page brought to you by AlphaSierraPapa

Download des Codes

Klicken Sie hier, um den Download zu starten.
http://www.aspheute.com/code/20030428.zip

Verwandte Artikel

Broken Links mit Link Sleuth erfassen
http:/www.aspheute.com/artikel/20010518.htm

 

©2000-2006 AspHeute.com
Alle Rechte vorbehalten. Der Inhalt dieser Seiten ist urheberrechtlich geschützt.
Eine Übernahme von Texten (auch nur auszugsweise) oder Graphiken bedarf unserer schriftlichen Zustimmung.