Schutz vor Email-Spidern in Formularen
Der Schutz vor Spam-Robots wird zwar bei Email-Links immer häufiger berücksichtigt, in HTML-Formularen aber oft vernachlässigt. Dabei ist der Aufwand für einen Basisschutz wirlich gering.
Die Situation: Spider-Schutz wird vernachlässigt
Das in HTML-Formularen übliche einleitende Form-Tag enthält die Empfänger-Emailadresse. Ist die Adresse unverschlüsselt und als zusammenhängernder Textstring eingetragen, können sie es den Sammlern von Emailadressen nicht leichter machen. Beispiel:
<form action="mailto:JuppZupp@abc.de" method="post" ...
Lesen sie dazu auch: Basiswissen Spam
Es ist empfehlenswert die Empfänger-Emailadresse zumindest zu 'zerstückeln'. Das bietet zwar keinen absoluten Schutz, hilft haber den Robots das Herausfischen der Emailadresse zu erschweren.
|
 |
Basis-Schutz
Ein Script schreibt das einleitende HTML-Tag für das Formular. Der Wert für das Attribut action="mailto: xxxx ", der normalerweise eine Emailadresse darstellt, wird dabei mit mehreren 'document.write-Anweisungen' in das HTML-Dokument geschrieben.
Das übliche einleitende Form-Tag, das sie normalerweise im HTML-Dokument notieren
<form action="mailto:JuppZupp@abc.de" method="post" ...
wird ersetzt durch JavaScript Schreibanweisungen. Das JavaScript schreibt nun das einleitende Form-Tag erst bei der Anzeige der Seite durch den Browser in das Dokument.
Die Empfänger-Adresse steht im Quelltext nun nicht mehr als zusammenhängender Text. Ein Spam-Robot muss also das JavaScript erkennen und analysieren um die Adresse ermitteln zu können. Das resultiert in mehr Programmieraufwand und längerer Rechnerzeit, die dem Email-Spider unter Umständen nicht gewährt wird.
Keine 100%-Lösung aber besser als nichts!
a Variante 1 - ohne Funktionsaufruf beim Senden
<script type="text/javascript" language="JavaScript">
<!--
document.write('<form action="mailto:JuppZupp');
document.write('@');
document.write('abc.de"');
document.write(' name="formularname" method="post"');
document.write(' enctype="text/plain">');
//-->
</script>
<noscript>
Javascript muss erlaubt sein!
</noscript>
b Variante 2 - mit Funktionsaufruf beim Senden
Soll beim Absenden (onSubmit) des Formulars noch eine Funktion aufgerufen werden, können sie auch diese Anweisung vom JavaScript schreiben lassen. Dazu fügen sie eine zusätzliche Zeile ein:
<script type="text/javascript" language="JavaScript">
<!--
document.write('<form action="mailto:JuppZupp');
document.write('@');
document.write('abc.de"');
document.write(' name="formularname" method="post"');
document.write(' onSubmit="Funktionsname();"');
document.write(' enctype="text/plain">');
//-->
</script>
<noscript>
Javascript muss erlaubt sein!
</noscript>
Sorgfalt ist geboten bei den Anführungszeichen / Hochkommas + Strichpunkten:
document.write(' onSubmit="Funktionsname();" ');
Beachten sie ebenfalls, das nach dem ersten Hochkomma (einstrichiges Anführungszeichen) immer zuerst ein Leerzeichen stehen soll. Die einzelnen Fragmente des einleitenden <form>-Tags werden aneinanderhängend in die Seite geschrieben. zwischen Tag und Attributen muss aber ein Leerzeichen stehen.
Auszug des einleitenden <form>-Tags:
<form|action="mailto:JuppZupp@abc.de"|method="post"|onSubmit="Funktionsname();
Nachteil
Wenn im Browser des Seitenbesuchers JavaScript nicht erlaubt ist, wird das einleitende <form>-Tag nicht geschrieben. Das Formular ist unvollständig und kann das Formular nicht abgesendet werden. Da aber bei Formularen in der Regel JavaScript auch zur Prüfung der Eingaben oder zur Berechnung eingesetzt wird, müssten sie in diesem Fall ohnehin auf den Einsatz des Formulars verzichten.
Aufwand
Entfernen sie in ihrem Dokument das einleitende HTML-Tag für das Formular und setzen sie an der Stelle den JavaScript-Code ein. Die Scriptzeilen können sie hier markieren und kopieren oder der Textdatei (Link oben) entnehmen. Passen sie die Angaben zur Empfänger-Emailadresse an, falls erforderlich tragen sie den Formularnamen (oder die ID) ein, fertig.
Zur Anpassung folgende Änderungen im Aufruf:
| Element |
hier im Beispiel |
ersetzen mit |
| Emailadresse Teil 1 |
JuppZupp |
ihre Daten |
| Emailadresse Teil 2 |
abc.de |
ihre Daten |
| Formularname |
formularname |
Bezeichnung ihres Formulars |
| Aufruf einer Funktion |
Funktionsname |
Bezeichnung ihrer Funktion |
in PHP-Seiten
Ich erlaube mir einmal einen kleinen Abstecher zu PHP:
Die Technik des 'Zerstückelns' sollten sie auch in Formularen
innerhalb von PHP-Seiten einsetzen.
// zerstückelte Mailadresse Empfänger
$mail_to01="JuppZupp";
$mail_to02="abc.de";
$mail_to=$mail_to01 . "@" . $mail_to02;

Basiswissen Spam
CAPTCHA-Schutz für Formulare - Basiswissen

|