Spamschutz - Antispam Formular


TEST Formular

Ein Beispiel Formular mit umfangreichem Spamschutz,
für Formulare, Foren, Kontakt, Gästebücher
mit dessen Hilfe man der Spamflut Herr weden kann und das ein mächtiges Antispam Tool ist.
Wie kann man ein HTML-Forumlar vor SPAM und Hacking schützen?
Diese Frage stellt sich wohl jeder, der auf seiner Website ein Formular zur Verfügung stellt.
unabhängig davon, ob es sich um ein Gästebuch handelt, ein Forum oder ein Kontaktformular.
Mit Hilfe von PHP wollen wir hier einige Beispiele für ANTI SPAM beschreiben
Wie schützen wir ein Formular for Spamattacken und vor ein Spameinträgen.
Das ganze Formular besteht aus folgenden Teilen:

  1. KontaktFormular.php
  2. controlFormular.php
  3. formular.html
  4. bild.php
  5. Auswertung.php
  6. badword.txt
  7. danke.html

Spam Schutz - Anti-Spam

Wir müssen und darüber im klaren sein, das ein 100 %iger Spamschutz wohl eher ausgeschlossen ist.
Aber wir können das Spamrisiko reduzieren.
Spamatacken und einen Spameintrag in vielen Fällen 100% identifizieren.
Der einzige Schutz vor Spam ist: kein Formular bereitstellen.
Ein sicherer Schutz vor Spam ist: Auf möglichst viele Spamelemente zu prüfen
Zuerst ein paar grundsätzliche Tips um einen Basisschutz vor Spam zu realisieren:

  1. Seiteninhalte, die per include() eingefügt werden, sollten OBERHALB des Webverzeichnisses liegen
  2. Werte, die den Inhalt steuern, sollten NIEMALS unüberprüft per URI übergeben werden.
  3. Formulare grundsätzlich per POST versenden
  4. Formulare NIEMALS ohne Prüfung verarbeiten

Was kann mann nun also tun, um seine Formulare vor Spam und hacking Attaken zu schützen?
Vielleicht sogar Spamfrei zu gestalten?
Und Spammer von der Seite fehrn zu halten ?
Es gibt eine vielzahl von Möglichkeiten, ein Formular HACK- und SPAM sicherer zu gestalten und Spam oder Hacking Attacken zu identifizieren, entweder sicher oder mit einer hohen Spamwahrscheinlickkeit
Manchnmal genügt es schon, einem Spammer die arbeit einfach schwerer zumachen um eine Spamreduzierung zu ereichen
oder Spam ganz zu verhindern und dem Spamproblem Herr zu weden.
Einige nützliche Verfahren werden hier kurz vorgestellt.
Am Ende der Seite stellen wir ein Formular - Muster und ein Prüfscript-Beispiel vor,
das aus verschiedenen Scripten besteht und einen umfangreichen Spamschutz integriert.
Den wesentlichen Teil für den Schutz vor Spam und Hacking Attacken trägt das Script controlFormular.php dazu bei. Das ist das eigentliche Antispam Modul
Hier sind Elemente enthalten, deren Funktionen prüfen, ob das Formular Elemente enhält, die für Spam
typisch sind.
Werden Spam typische Elemente entdeckt, wird die Verabreitung der Formularinhalte unterbunden und eine entsprechende Fehlermeldung ausgegeben. Und somit Spam unterdrückt oder verhindert. Dieses Script sollte eigentlich wohl Antispam heissen.
Hier aber nun zuerst einige Tips, um die Möglichkeiten von Spam und Hackingzu reduzieren: .

Methoden, um Spam und Hacking Attacken zu identifizieren


Die mit * kenntlich gemachten Methoden sind im Beispielformular verwendet.

  1. *SPAM-BOTS senden häufig keinen HTTP-REFER UND keinen USER-AGENT
    • Folglich kann man prüfen, ob HTTP-Refferer und USER-AGENT existieren. Ist das nicht der Fall, könnte man von einem Spam Versuch ausgehen.
      Allerdings erlauben einige Browser das Ausschalten beider Informationen.
      User, die dies Nutzen, würden wir also auch davon ausschließen, das Formular zu nutzen.
      In unserem Beispiel-Formular haben wir diese Abfrage implementiert.
  2. *SPAM-BOTS
    senden häufig mehr als die in einem Formular enthaltenen Elemente
    • Also können wir prüfen, ob die Anzahl der Formularelemente unseres Formulares von den gesendeten Elementen abweicht!
      Ist das der Fall, haben wir hier sicher Spam identifiziert.
      Oder ob die gesendeten Formularelemente mit denen,
      die in unserem Formular entahlten sind übereinstimmen.
  3. *Formularfeld Namen
    • Benennen Sie Formularfeld Namen NICHT eindeutig!
      Also nicht name='name' name='email' usw.
      sondern: name='dataForm[0]' name='dataForm[1]' usw.
      Das erschwert Spam Bots die Zuordnung von Formular-Elementen.
  4. *Formularfeld Fallen
    • Wenn wie unsere Formularfelder nicht eindeutig bennen, können wir ein Feld als Falle ausbilden.
      Wir nehmen ein text-Feld, und nennen es name='email' value='' und weisen diesem Feld keinen Wert zu.
      Über CSS geben wir diesem Feld display:none; Es ist für den User nicht sichtbar. Für einen Spambot schon.
      Wenn dieses Feld nun einen Wert hat, können wir sicher davon ausgehen, das her ein SPAM-BOT am Werk ist.
  5. *BAD-WORD Kontrolle
    • Spam und Hacking haben häufig sich wiederholende Eigenschaften.
      z.B. Begriffe, die enthalten sind.
      Wir können nun den Inhalt bestimmter Felder auf diese Worte abprüfen.
      Das ist keine 100 prozentige Methode, da natürlich normale User diese Begriffe auch nutzen können.
      Aber trotz alledem ein nicht zu unterschätzender Hinweis auf Spam und für guten Spamschutz sehr nützlich.
      Hier können wir aber nur von einer Spamwahrscheinlichkeit sprechen.
      Zusätzlich zu den bad words könnte man prüfen, ob BB Code verwendet wurde, insbesondere [url]*[/url] => sofern das im Prinzip nicht zugelassen ist. Bots verwenden das oft.
  6. *Image Code (Captcha)
    • Wir erzeugen ein Bild mit einem CODE, der in ein Formularfeld eingetragen werden muss,
      und der überprüft wird.
      Um diesen für Programe schwerer auslesbar zu machen, wird das Bild mit einem Raster von Pixeln
      mit sehr ähnlichen Farben überzogen.
      Es macht allerdings keinen Sinn, wenn dieser CODE im Formular bereits vorhanden ist.
      Daher sollte er in einer Session gespeichert werden.
      In unserem Prüfscript wird dieser Code kontrolliert.
      Wenn dieses Bild per PHP generiert wird, muss die Datei eine Namensendung haben, die von PHP geparst, also intrpretiert wird.
      Als Beispiel: Bild.php
      Um dies unverfänglicher zu gestalten können wir per .htaccess dem Server mitteilen, das er auch die Endung .ppng
      als interpretierbare Datei-Endung akzeptiert.
      nun können wir das Bild : bild.ppng nennen.
      Wenn nun die Ziffer im Formular nicht oder nicht richtig übertragen wird, gibt es eigentlich nur drei Möglickeiten:
      1. Ein User hat sich vertippt
      2. ein User hat es übersehen
      3. Es ist Spam

      Also ein nützliches Hilfsmittel, um Spam zu identifizieren.
  7. Rechenaufgabe (Captcha)
    • Man fordert den User auf, in einem Formularfeld das Ergebniss einer Rechenaufgabe einzutragen.
      Im Grunde verhält es sich wie bei dem Image Code, nur das der Wert erst errechnet werden muss und nicht vorgegeben ist.
      Für beides ist anzumerken, das dies nicht unbedingt Barrierefrei ist!
      Aus diesem Grund sollte mann die Aufgaben einfach halten.
      Ist der Wert falsch, verhält es sich ähnlich wie bei Image Code.
      Man sollte die Aufabe aus einem Pool von Aufgaben mit unterschiedlichen Zufallswerten generieren,
      um es Spambots zu erschweren, das Ergebniss zu speichern.
  8. *Email Adressen prüfen
    • Um zu verhindern, das versucht wird, MassenEmails über das Script zu versenden,
      überprüfen der Anzahl möglicher Emailadressen im Email-Feld.
      Dafür zählen wir die Anzahl der Tilden [@].
      Ist diese grösser 1, handelt es sich wohl um SPAM.
      Ein ganz herforragende Methode, um Spamschutz zu betreiben und Spam zu identifizieren.
  9. *Kontrollwert in einer Session
    • Wir generieren auf der Startseite einen Kontrollwert per Zufallszahl.
      Dieser Wert wird im Script überprüft, er muss in nerhalb vorgegebener Grenzen liegen.
      Wenn ein Bot nun die Zielseite des Formulares ansteuert, die ausgelagert ist und diesen Sessionwert nicht enthält haben wir sicher Spam identifiziert. Wei er nicht über die Formularseite bzw. Startseite gegangen ist.
  10. *$_GET var prüfen
    • Grundsätzlich: Es sollten niemals externe Variablen ohne ausgiebige Prüfung, ob deren Werte zulässig sind, übernommen werden!
      In unserem Beipiel werden keine Daten per GET | URI übergeben.
      Also überprüfen wir, ob per URI Daten übergeben werden.
      Ist dies der Fall, ist das ein eindeutiger Beweis für eine Spamattacke !
  11. IP-Sperre
    • Wir können die IP des Users sperren, für zB. 15 Sekunden.
      Das kann eine Wiederholung der Ausführung verhindern.
      Lassen wir die Nutzung eines Scriptes nur innerhalb von einer festgelegten Zeitspanne für jeden Benutzer nur einmal zu, kann ein SPAM BOT oder ein manueller Spammer, dieses Formular eben auch nur einmal nutzen.
      Ein sehr nützlicher Ansatz für einen guten Spamschutz.
      Diese Methode läst sich auch für ein Login nutzen. Nach z.B. drei maligem Fehlversuch wird die IP gesperrt und hat keinen Zugriff auf das Formular mehr.
      Ein Beispiel für eine IP-Sperre finden Sie hier:
      IP Sperre Beispiel

Test Formular

Der beste Schutz vor Spam ist also soviel wie möglich zu tun, zum Spam vermeiden
Um das Formular zu testen , steht das Formular mit seiner kompletten Testversion
zur Verfügung:
( Natürlich ist der Spamschutz dieses Formulares nur ein Beispiel, wie aus dem Umfang der badwort.txt zu erkennen ist.
Formular testen:TEST Formular



[copy rights © www.oxxo.de 2006]
Die Nutzung dieser Scripte für private Seiten ist ausdrücklich erlaubt und erwünscht! : )
Ein Backlink wäre nett. Danke!