Direkt zum Inhalt
Bild von CVB      vLIB-Logo      Logo mwCMS
Navigation oben
Impressum    Kontaktformular
Navigation
News
Mail-Formulare auf Webseiten mit PHP absichern: Immer noch gibt es Webseiten, die unsichere PHP-Formulare oder veraltete (englisch: "deprecated") Technologien einsetzen. Erst letztens (Oktober 2009) ist mir ein Projekt untergekommen, bei dem noch die veralteten HTTP_SERVER_VARS benutzt wurden. Man trifft leider auch immer wieder auf PHP-Skripte, die für Spam missbraucht werden können. Mehr ...
Belinea gaming.book 4166: Ich habe bei "notebooksbilliger.de" ein neues Notebook bestellt. Mein altes Notebook von Gericom habe ich im Dezember 2003 gekauft und mittlerweile ist das DVD-Laufwerk defekt und im Bus oder bei anderer leichter Erschütterung, rebootet das Gericom ganz unmotiviert. Mehr ...
Windows Server 2008: Im Windows Server 2008 wurde das Look&Feel von Windows Vista integriert. Viele Features sind genauso wie in Windows Server 2003. So ist zum Beispiel das Zertifikatsmanagement zwar umbenannt worden, aber im Hintergrund ist alles identisch. Die Art und Weise, wie man Zertifikate anlegen und den Benutzern zur Verfügung stellen kann, ist wirklich einfach und schön ("Windows-like" halt :-). Mehr ...
Umstieg von Windows auf Linux: Ich bin von Windows auf Linux umgestiegen. Die Distribution war dabei für mich klar, weil wir auf der Arbeit nur Produkte von SUSE bzw. Novell einsetzen. openSUSE 11.0 ist dabei die neuste Version für Privatanwender wie mich. openSUSE ist, im Gegensatz zu Windows, völlig kostenlos. Mehr ...
Urlaub, Schwimmen und Freunde: Der Artikel enthält Angaben zu meinem Urlaub, der Stadt Dortmund und was sonst noch passiert. Außerdem ist die Umstellung auf das mwCMS fast fertig. Ich meinen Rekord aus dem letzten Jahr gebrochen: Ich bin 20 Bahnen in 0:32:05,21 geschwommen. Letztes Jahr waren es noch 0:32:24,33. Vielleicht schaffe ich es dieses Jahr noch unter 32 Minuten. Mehr ...

Mail-Adressen auf der eigenen Webseite schützen

  • Kommentieren
  • Drucken
MailNull.com (Logo)

Das Content Management System Typo3 verschlüsselt jede Mail-Adresse mit JavaScript, wenn Typo3 richtig konfiguriert ist. Wenn eine Mail-Adresse im Klartext auf der Homepage steht, "your_name@domain.tld" beispielsweise, ist Spam nur eine Frage der Zeit. Mit den Jahren wird eine solche Mail-Adresse unbenutzbar, da sie nur noch zugespamt wird. In meinem Artikel Greylisting und "mailnull.com" habe ich erläutert, wie man Greylisting und "Wegwerf-Adressen" von mailnull.com kombinieren kann.

Der hier dargestellte Source-Code ist auf vielen Typo3-Webseiten zu finden, aber über den Autor konnte ich trotz vieler und aufwändiger Google-Recherchen nicht ermitteln. Unter Typo3 wird die Verschlüsselung mit "config.spamProtectEmailAddresses" im TypoScript aktiviert. Da Typo3 der GPL unterliegt, sollte meine erstellte Dokumentation im Quelltext und der Download der beiden Funktionen (plus Beispiele) kein Problem sein.

JavaScript Code

Der folgende JavaScript-Code muss auf jeder Webseite verfügbar sein, wenn dort Mail-Adressen verschlüsselt werden sollen. Es empfiehlt sich eine externe Datei zu verwenden bzw. das JavaScript der gesamten Webseite auszulagern.

// Decrypts a mail adress with JavaScript, which was encrypted with PHP
function decrypt_mail(mail_address)
{

   var ascii = 0;
   var decrypted_mail = '';

   for (var i = 0; i < mail_address.length; i++)
   {
      
ascii = mail_address.charCodeAt(i);

      if (
ascii >= 8364)
      {
         
ascii = 128;
      }

      
decrypted_mail += String.fromCharCode(ascii - 1);
   }

   
location.href = decrypted_mail;
}

PHP Code

Der Aufruf der PHP-Funktion benötigt als Parameter eine Mail-Adresse und TRUE oder FALSE. Die Funktion und die Parameter sind genau dokumentiert.

/**
* Encrypts a mail adress with PHP.
*
* @param   string    $mail_address: your_name@domain.tld
* @param   boolean   $encrypt: TRUE or FALSE
* @return  string    $obscure_mail or $encrypted_mail: see below
**/
function encrypt_mail($mail_address, $encrypt)
{
    
/**
     * Do not encrypt, but make it harder to read for spam robots, e.g.
     * "your_name@domain.tld" => "your_name [at] domain [dot] tld"
    **/
    
if ($encrypt === FALSE)
    {
        
$obscure_mail = str_replace('@', ' &#091;&#097;&#116;&#093; ', $mail_address);
        
$obscure_mail = str_replace('.', ' &#091;&#100;&#111;&#116;&#093; ', $obscure_mail);

        return
$obscure_mail; // "your_name [at] domain [dot] tld"
    
}

    
$encrypted_mail = '';
    
$mail_address = 'mailto:' . $mail_address;

    for (
$i = 0; $i < strlen($mail_address); $i++)
    {
        
$ascii = ord($mail_address[$i]);

        if (
$ascii >= 8364)
        {
            
$ascii = 128;
        }

        
$encrypted_mail .= chr($ascii + 1);
    }

    return
$encrypted_mail; // "nbjmup;zpvs`obnfAepnbjo/ume"
}

Beispiele

Beide Skripte werden auf vielen Webseiten benutzt. Um das Verständnis für die Funktionsweise zu erhöhen hier ein paar Beispiele:

Wenn man einen Blick auf den Quellcode der Webseite wirft, wird man eine Zeile wie diese finden:

<a href="javascript:decrypt_mail('nbjmup;zpvs`obnfAepnbjo/ume');">your_name &#091;&#097;&#116;&#093; domain &#091;&#100;&#111;&#116;&#093; tld</a>

Ich habe die Hyperlinks mit "w3m" und "lynx". JavaScript funktioniert nicht, aber "$obscure_mail" wird richtig angezeigt.

[ erstellt am Donnerstag, 31. Januar 2008 um 12:26:19 ]

Diese Seite erfüllt die folgenden Standards:

Valid XHTML   Valid CSS