Die Nutzung von Webformularen macht für Spammer in mehrfacher Hinsicht Sinn, da die Nachrichten definitiv einen exisitierenden Empfänger erreichen, Mail-Spamfilter hier nicht funktionieren und die strafrechtliche Rückverfolgung der Spammer erheblich erschwert wird.
Zum Schutz gegen Spam-Einträge bietet sich ein "Captcha" (completely automated public Turing test to tell computers and humans apart) an. Was kompliziert klingt, ist letztlich ganz einfach: In einem Bild werden Ziffern und Zeichen dargestellt, welche vom (menschlichen) Besucher in ein dafür vorgesehenes Eingabefeld eingetragen werden müssen. Stimmt diese Zeichenfolge, wird das Formular abgeschickt - ansonsten nicht. Damit Spamroboter das Bild nicht mittels einer OCR-Technik "erkennen" können, werden die Zeichen leicht verbogen angezeigt und störende Bildpunkte oder -striche eingefügt.
Der Einbau eines Captcha in eine VIO.Matrix Website grundsätzlich über folgende Schritte:
Das hier gezeigte Beispiel nutzt PHP-Code zur Erzeugung des Bildes. Genausogut könnte das Bild mit Hilfe eines Shellskriptes und ImageMagick, SVG oder ähnlicher Verfahren erzeugt werden.
Erstellen Sie ein Hintergrundbild in der Größe 150x50 Pixel im PNG-Format. Das Bild sollte farbige, wahllos verteilte Punkte und dünne Linien besitzen (ähnlich dem Rauschen früherer Fernsehapparate). Speichern Sie das Bild auf dem Webserver in einem Verzeichnis "captcha" unter dem Dateinamen "captcha.png".
Zur Erstellung ist Ziffernfolge auf dem Hintergrundbild wird eine Truetype-Schriftart notwendig. Kopieren Sie die TTF-Datei ebenfalls in das "captcha"-Verzeichnis auf dem Webserver (bspw. "myfont.ttf").
Erstellen Sie das folgende PHP-Skript "captcha.php" und legen Sie es in einem öffentlich zugänglichen Verzeichnis ab:
Dieses Skript macht nichts anderes, als eine Zufallszahl auf das Hintergrundbild zu rendern und das Bild an den Webbrowser auszuliefern. Danach wird der Geheimcode unter der SitzungsID in eine temporäre Datei geschrieben.
Werden parallel zum dynamischen Web statische Websites erzeugt ist folgendes zu beachten: