MailSpamBlocker
    


HOME

ZURÜCK SITEMAP  

 MailSpamBlocker

Beispiel ist in Arbeit!

Ich möchte Emailadressen auf Webseiten nicht mehr im Klartext notieren. Um Spam-Robots das Leben zu erschweren sollen Email-Verweise im Quelltext der Webseite keine gültigen Adressen beinhalten. Für den Webmaster egibt sich daraus ein etwas größerer Aufwand bei der Erstellung des Seiten.


Ich möchte eine Emailadresse im Quellcode verschlüsselt notieren und bei der Anzeige der Seite durch den Bowser wieder entschlüsseln lassen. Das Verschlüsselungsformular biete ich zur Offlinenutzung als Download an, damit sie nicht das ungute Gefühl haben, ich könnte online damit Emailadressen sammeln.

Grundkenntnisse über Arbeitsweisen von Spam-Robots und die üblichen Schutzmechanismen stelle ich auf der Seite Basiswissen Spam und den Folgeseiten vor.




   Aufwand

  • Emailadresse Codieren
  • Funktionsaufruf zum Schreiben des Email-Links notieren
  • JavaScript im Head-Bereich notieren

1  Berechnung der Verschlüsselung

Es handelt sich hier nicht um eine simple Umwandlung in ASCII-Werte oder CharCode! Erklärungen zur Funktion lesen sie weiter unten.

Emailadresse eintragen
 
'kodieren' anklicken und Code kopieren


2  Der Funktionsaufruf für den Email-Verweis für jupp@abc.de wird im BODY notiert:
<script type="text/javascript" language="JavaScript">
<!-- Begin
EmailLinkSchreiben("108,120,116,117,058,104,106,108,048,111,113")
//  End -->
</script>

3  JavaScript im Head-Bereich notieren

Das Script entnehmen sie bitte der Textdatei (Link im Kopfbereich)



Erklärungen zum Aufbau und der Funktion dieses MailSpamBlockers und eine Demo der Verschlüsselung in einzelnen Schritten lesen sie ab hier.



   Für das Verständnis

Statt üblicher Textzeichen kann man auch den ASCII-Wert / UNI-Code (oder benannte Zeichen) in einer HTML-Seite notieren. Sie kennen das sicher bei &euro; für das Euro-Zeichen ().

So zeigt der UNI-Code &#114;  ein  r, der UNI-Code &#115;  ein  s  usw.

Das sollten sie wissen, damit sie die Rechenoperationen in meinem Beispiel verstehen.

Die Grundlage für meine Verschlüsselung ist erst einmal ein simpler Codierungsmechanismus, der aus einer Zeichentabelle ein Ersatzzeichen auswählt. Mit einem simplen Codierungssystem wie in der Tabelle unten, würden den einzelnen Zeichen des Alphabets Ersatzzeichen fest zugeordnet.

Die einfache monoalphabetische Substitution wird durch eine Verschiebechiffre erweitert, die von Zeichen zu Zeichen anders ist. mehr Info bei Wikipedia

Ein 'a' entspricht dann einem 'c', ein 'b' entspricht einem 'd' usw.

Die Werte sind hier um 2 Zeichen verschoben (verschieben = shift [englisch]). Nennen wir es einmal eine shift-2-Codierung.

Klartext: abcdefghi jklmnopqr stuvwxyz
shift-2: cdefghi jklmnopqr stuvwxyz {|

Die Zeichenkette 'aaaaa' würde als 'ccccc' dargestellt.



   Was ich mir ausgedacht habe (die Idee ist natürlich nicht neu)

Ich gehe einen Schritt weiter und nutze zur Codierung des Textes (der Emailadresse) nicht das simple Codierungssystem, sondern erweitere die Basisverschiebung zusätzlich durch zyklisches Verschieben jedes weiteren Zeichens.
  • für das erste Zeichen eine shift-2-Codierung,
  • für das zweite Zeichen eine shift-3-Codierung,
  • für das dritte Zeichen eine shift-4-Codierung,
  • ...
Natürlich könnte ich statt der Basisverschiebung von 2 und der zyklischen Verschiebung von 1 auch andere Werte einsetzen oder unregelmäßige Werte aus einem Register verwenden.

Beispiel bei einer Basisverschiebung von +2 und einer Schrittverschiebung +1:

Die Zeichenkette 'aaaaa' würde als 'cdefg' dargestellt.

Der Text 'mailto:' könnte dann z.B. als 'odmqzvB' im Quelltext stehen.



Die ersten Stufe der Verschlüsselungstechnik, die in meinem MailSpamBlocker eingesetzt werden soll, demonstriere ich hier in einzelnen Schritten.

Originaler TextString
 
entspricht dem Character Code
Umrechnung nur Ziffern
Simpler Shift, Jedes Zeichen um 2 Zeichenwerte erhöhen
Codierung Shift um: 2 Zeichen, 3 Zeichen, 4 Zeichen, 5 Zeichen, ...
verschlüsselter Textstring als CharCode:
Sie können im ersten Eingabefeld einmal einen anderen Text (eine Pseudo-Emailadresse) eintragen und die Schritte noch einmal nachvollziehen.
('aaaaa' mit der Rückschritt-taste löschen)


Was ich im Formular mit 'aaaaa' demonstriert habe, könnte man auch mit einer Email-Adresse machen! Für die Emailadresse jupp@abc.de wird der verschlüsselte Textstring als CharCode so aussehen:

&#108;&#120;&#116;&#117;&#058;&#104;&#106;&#108;&#048;&#111;&#113;

Diese CharCode-Zeichen ergeben im Klatext: lxtu:hjl0oq


   Erklärung der zweiten Stufe

Vereinfacht dargestellt würde der Spam-Robot dann im Quelltext des HTML-Dokuments für den Email-Verweis so etwas ähnliches vorfinden:

<a href="mailto:lxtu:hjl0oq">Email</a>
So einfach machen wir das dem Robot aber nicht, sondern tragen statt des CharCodes nur die Zahlenwerte ein:
<a href="mailto:108,120,116,117,058,104,106,108,048,111,113">Email</a>
?  Stufe 2 (als zusätzliche Option?)

Ich könnte dabei noch einen Schritt weiter gehen und den Code (die verschlüsslte Emailadresse) so eintragen:
<a href="mailto:108120116117058104106108048111113">Email</a>
Das könnte man noch toppen, wenn man mit dem oben angezeigten Code eine Rechenoperation durchführt oder einige Ziffern voranstellt.
Beispiel mit vorangestellten Ziffern, z.B. 12345:
<a href="mailto:12345108120116117058104106108048111113">Email</a>

Damit sollte der Spam-Robot seine Mühe haben, möchte er die Emailadresse herausfischen. Diese JavaScript Verschlüsselung mit der Shift-Verschlüsselung ist weitgehend sicher.

Natürlich könnte ein Spider versuchen den Code zu entschlüsseln, nur wieviel Zeit und wieviele Versuche würden einem intelligenten Spider zur Verfügung gestellt werden, alle Möglichkeiten durchzuprobieren?


Bei der Dekodierung müsste ich in umgekehrten Rechenschritten vorgehen: Die ersten 5 Zeichen entfernen, die verbleibende Zahlenkolonne in 3er-Gruppen aufteilen, von der ersten 3stelligen Zahl 2 subtrahieren, von der zweiten 3stelligen Zahl 3 subtrahieren, von der dritten 3stelligen Zahl 4 subtrahieren, ... . Aus den errechneten Zahlen CharCodes generieren.


   Der Email-Link

Der Funktion mit dem Auftrag einen Email-Link zu schreiben, wird beim Aufruf der Zahlencode übergeben. Der Funktionsaufruf steht im HTML-Dokument genau dort, wo der Email-Verweis erscheinen soll. Im Quelltext steht dann für den Email-Verweis 'jupp@abc.de'

Wird die Seite im Browser aufgerufen, soll aus dem übergebenen Code ein gültiger Email-Verweis in das Dokument geschrieben werden.

Ich benötige also eine Funktion, die zur Entschlüsselung die umgekehrte Rechenoperation ausführen soll. Aus den übergeben Zahlen sollen die entsprechenden Textzeichen für die Emailadresse ermittelt werden.

Der Funktionsaufruf für den Email-Verweis für jupp@abc.de wird so notiert:
<script type="text/javascript" language="JavaScript">
<!-- Begin
EmailLinkSchreiben("108,120,116,117,058,104,106,108,048,111,113")
//  End -->
</script>
Der Funktionsaufruf für den Email-Verweis für zenzi@abc.de wird so notiert:
<script type="text/javascript" language="JavaScript">
<!-- Begin
EmailLinkSchreiben(124,103,112,124,107,054,099,100,101,040,102,103)
//  End -->
</script>



   Entschlüsseln / Dechiffrieren + Link schreiben

Wird die Seite im Browser aufgerufen, muss die Funktion EmailLinkSchreiben() Rechenoperation ausführen, um die Emailadresse als 'juppzupp@web.de' bzw 'zenzi35@web.de' einbinden zu können. Bei der Dekodierung müsste ich in umgekehrten Rechenschritten vorgehen.

Die Funktion soll folgende Aufgaben erfüllen:
  • Code entgegennehmen
  • (die ersten 5 Zeichen entfernen)
  • (die verbleibende Zahlenkolonne in 3er-Gruppen aufteilen)
  • von der ersten 3stelligen Zahl 2 subtrahieren,
  • von der zweiten 3stelligen Zahl 3 subtrahieren,
  • von der dritten 3stelligen Zahl 4 subtrahieren,
  • ...
  • aus den errechneten Zahlen CharCodes generieren.
  • den Email-Link durch eine JavaScript- Anweisung in das Dokument schreiben



Stand meiner Arbeit am 08.08.2008 - 09:30 Uhr







<script type="text/javascript" language="JavaScript">
<!--


function dechiffrieren(code) {
// hier stehen die Anweisungen
return Klartext
}


function EmailScreiben(Code,LinkText) {

dechiffrieren(Code)

document.write('\<a href=\"mailto:' + Klartext + '">');
document.write(LinkText + '</a>');


//-->
</script>


 Email Linktext




Notizen:

Klartextalphabet:   a b c d e f g h i j k l m n o p q r s t u v w x y z
Geheimtextalphabet: D E F G H I J K L M N O P Q R S T U V W X Y Z A B C


CharCode-Tabelle





Module Musterseite:

  Demo Beispiel für die aktuelle Ausgabe:   inhalt




text





<form>
<input readonly class="anzeige" type="text" id="Zeit">
</form>
Zur Anpassung folgende Änderungen im Aufruf:

Element    hier im Beispiel   ersetzen mit  
Dateiname foto-gross.jpg Dateiname 
Breite 240 Wert in Pixel
Höhe 180 Wert in Pixel















NACH OBEN