Mail-Adressen auf der eigenen Webseite schützen
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, "[email protected]" 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: [email protected]
* @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.
* "[email protected]" => "your_name [at] domain [dot] tld"
**/
if ($encrypt === FALSE)
{
$obscure_mail = str_replace('@', ' [at] ', $mail_address);
$obscure_mail = str_replace('.', ' [dot] ', $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 [at] domain [dot] 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 ]