BreezingFoms / FacileForms

Spamschutz mit BreezingForms unter J!1.5.x

Bewertung:  / 3
SchwachSuper 

Zielsetzung

Mit BreezingForms im EasyMode erstellte Formulare (z.B. Kontaktformular) lassen sich mit wenigen einfachen Mitteln gegen Spambots schützen. Der Schutz ist nicht hundertprozentig, aber doch immerhin so gut, dass man gut 95% Spam abblockt. Wie viele andere vertrete auch ich die Auffassung, dass das Prinzip der Captcha-Grafiken nicht zuverkässig genug ist um dafür in Kauf zu nehmen die User mit den komplizierten Gekritzel der Grafiken zu belästigen. Deshalb greife ich in der Umsetzung auf die Kombination von 2 Schutzmechanismen zurück, die sich bewehrt haben.

Diese Anleitung basiert auf den Einsatz von Joomla 1.5.26 und BreezingForms 1.7.3 im EasyMode, kann aber sicher auch auf spätere Versionen adäquat angewendet werden.

Als Schutzmethoden kommen der Zeitfensterschutz und Hony-Pot zum Einsatz.

 



Zeitfensterschutz

Das Prinzip dieser Spamprüfung liegt darin die Zeit auszuwerten zwischen dem Aufruf der Formularseite und dem Absenden. Kein Mensch füllt ein Formular unter 10 Sec. aus, und braucht sicher auch nicht länger als 20 Min. Also fragen wird genau dieses Zeitfenster ab.

1. Wir erzeugen ein unsichtbares Formularfeld in unserem Formular. Das Verstecken kann über ein hidden-Input erfolgen, besser jedoch ist es über CSS-Attribute in einer externen CSS-Datei zu arbeiten. Um das Feld über die ID zu adressieren verwenden wird die FF-Feld-ID. Es wird also ein ganz normales Textfeld im Formular eingebaut. z.B. mit dem Bezeichner check.

#zeit_input, #comment_input { overflow:hidden; height:0; margin:0; }

2. Das Feld müssen wir mit einem Zeitwert vorbefüllen. Damit das Formular beim Aufruf diese Information im Feld check stehen hat, kann man ein eigenes kleines BF-Script erstellen (s. Scripte verwalten) und über die Formulareinstellung > Scripte > als Initialisierungsskript einbinden. Entweder als Bibliotheksskript oder als "Spezial"-Skript.

function ff_preFillRRFormUsersInfo() {
<?php return "ff_getElementByName('check').value = '".(time()*65)."';\n"; ?>
}

Die Multiplikation mit 65 dient lediglich nur noch mal als kleine Form der Zeit-Verschlüsselung.

3. Nun müssen wir beim Absenden des Formulars abfragen, ob die aktuelle Zeit im Zeitfenster zw. unserer übermittelten Aufrufzeit und den Minimal- und Maximalwerten liegt. In der Formularverwaltung wird in den Formulareinstellungen unseres Kontaktformulars unter dem Register "Übermittlungsteile" in der Gruppe "Beginn Übermittlung" folgende Scriptzeilen eingefügt:

$this->execPieceByName('ff_InitLib');

$seconds = time() - ff_getSubmit('check')/65;

if( $seconds < 20 || $seconds > 2000 ) {
if (headers_sent() === false)
header('Location: http://www.redirectpage.de/', true, 302);
die();
}

 

Honey-Pot

Das Prinzip von Hoey Pot ist, dass ein ebenfalls verstecktes Formularfeld leer gesendet wird. Spambots haben das Bestreben in alle gescannten Felder auch etwas einzutragen. Der Nutzer, der dieses Feld nicht sieht trägt nichts ein, der Bot schon.

1. Es wird nach dem gleichen Prinzip wie oben ein Feld eingefügt, irreführend benannt z.B. als Comment und über CSS (s.o.) versteckt.

2. Angleicher Stelle, wie oben, wo wir das Zeitfenster abfragen, ergänzen wir das Übermittlungsscript durch die Prüfung, ob der Feldinhalt leer geblieben ist. Nachfolgend mal das vollständige Script:

$this->execPieceByName('ff_InitLib');

$seconds = time() - ff_getSubmit('check')/65;

if( ff_getSubmit('comment') != '' || $seconds < 20 || $seconds > 2000 ) {
if (headers_sent() === false)
header('Location: http://www.redirectpage.de/', true, 302);
die();
}

 

  • Keine Kommentare gefunden

Einen Kommentar verfassen

Als Gast kommentieren

0
Deine Kommentare erfordern die Moderation durch den Administrator
Nutzungsbedingungen.
Suche - Kategorien
Suche - Inhalt
plg_search_attachments
VM - Search, Virtuemart Product

Ihr Warenkorb

 x 
Ihr Warenkorb ist noch leer.