Keinen Spam über das Kontaktformular zulassen

Bis vor kurzen hatte ich auch in meinem Blog nicht unerheblich mit Spam zu kämpfen, da ich nicht mit Captcha's arbeiten möchte, habe ich nach einer neuen Methode gesucht, um Spam sinnvoll und bestenfalls dauerhaft zu bekämpfen.

Die Spamroboter füllen immer alle Input-Felder aus. Besonders dann, wenn diese den Wert 'email' oder 'web' als Namen haben. Ich habe deshalb ein Input-Feld erstellt, welches ich über eine CSS-Klasse den Wert

visibility: hidden;

gegeben habe. Das heißt, dass dieses Input-Feld versteckt ist und von einem Menschen nicht mehr ausgefüllt werden kann. Jetzt prüfe ich mit einer PHP if-Schleife, ob das Feld ausgefüllt ist oder ob dieses Input-Feld leer ist. Sollte das Feld ausgefüllt sein, muss der Eintrag definitiv von einem Spambot gemacht worden sein.

if(!empty($_POST['email'])) { echo"Spam"; } else { echo"Kein Spam"; }

Für das eigentliche E-Mail Input-Feld sollte man dann eine andere Bezeichnung finden.



Es wurden bereits 13 Kommentare geschrieben.

Constantin schrieb am 05.06.2008 um 22:26 Uhr:
Hallo, die Idee finde ich mal richtig gut! Ganz großes Kino. Ich hab schon überlegt, ob ich die Feldnamen bei mir einfach umbenenne aber deine Idee gefällt mir bedeutend besser! Liebe Grüße, Constantin
Thomas schrieb am 16.06.2008 um 17:15 Uhr:
Was bei mir eine Menge gebracht hat - vor allem gegen Trackback Spam - ist zu prüfen, ob das Useragent Feld leer ist. Vielleicht erwischts nen paar "gute", aber ich glaube eher nicht.
Marc Martin schrieb am 17.06.2008 um 12:40 Uhr:
Absolut geile Idee. Ich werd das gleich mal testen. Allerdings könnte ich mir vorstellen, dass ein gut programmierter Bot sowas erkennt. Wie ist denn das aktuelle Spamaufkommen?
Fabsen schrieb am 17.06.2008 um 15:21 Uhr:
Das Spamaufkommen ist seit Wochen gleich Null. Ich habe hier im Blog keine weiteren Überprüfungen und gebe nichts manuell frei. Ich hatte vorher nach wenigen Tagen hunderte Spameinträge hier im Blog...
Fabsen schrieb am 18.06.2008 um 10:11 Uhr:
In einem Forum kam noch folgender Tipp als Antwort: Ein verstecktes Formularfeld mit einem Timestamp. Dieser Timestamp wird ja erzeugt beim Seitenaufruf. Sollte zwischen dem Seitenaufruf und dem Abschicken z. B. weniger als 5 Sekunden liegen, handelt es sich um 100% um Spam. Denn für das Ausfüllen eines Formulars benötigt man mehr als 5 Sekunden... Muss man mit PHP nur die Differenz zwischen den beiden Timestamps berechnen.
Andreas schrieb am 01.07.2008 um 11:10 Uhr:
Hallo, ja das mit dem Timestamp mache ich auch, dazu noch eine mindest Anzahl von Zeichen. salü
Yoshi schrieb am 03.07.2008 um 15:10 Uhr:
Hallo, hab das mit diesem Script auprobiert, bring es aber nicht zum laufen!?! Weiss der Teufel... Kann mir jemand genau erklären, wie das geht? Habt Ihr ein fertigen Beispielcode für mich? MFG
Olaf schrieb am 05.08.2008 um 12:16 Uhr:
Super Idee, muss ichauch mal testen. Wobei eben die Frage ist ob Spam Programme nachscheun obs ein hidden Feld ist - aber denn kann ja der Tip mit den Timestamps helfen
chris schrieb am 11.08.2008 um 15:12 Uhr:
Das ist mal eine wirklich gute Idee! Ich ringe die ganze Zeit schon mit mir, wie ich die Kommentar-Funktion aufmachen, ohne dann gleich von SPAM-Bots plattgemacht zu werden. Spontan kommt mir die Idee, dass man das Thema ja leicht variieren kann, indem man das Feld nicht unsichtbar macht, sondern minimalistisch klein oder mit einer absoluten Positionierung ausserhalb des sichtbaren Bereichs positioniert - sowas dürfte kein Spambot mehr automatisch erkennen können.
Fabsen schrieb am 12.08.2008 um 09:26 Uhr:
Im nicht sichtbaren Bereich über eine CSS-Klasse dürfte fast noch besser sein als visibility: hidden; einzustellen.
Mane schrieb am 26.10.2008 um 19:33 Uhr:
Habe eine Frage, warum wird Kein Spam im Explorer angezeigt, also ich habe es so abgeändert: <?php echo '<?xml version="1.0" encoding="iso-8859-1"?>' ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>Kontakt</title> <meta http-equiv="content-script-type" content="text/javascript" /> <meta http-equiv="content-type" content="text/html; charset=iso-8859-1" /> <meta http-equiv="imagetoolbar" content="no" /> <meta name="robots" content="all" /> <meta name="description" lang="de" content="..." xml:lang="en" /> <meta name="keywords" content="..." /> <meta name="verify-v1" content="----" /> <link rel="shortcut icon" type="image/x-icon" href="./favicon.ico" /> <link rel="stylesheet" type="text/css" href="./template/style_[BROWSER].css" /> </head> <body> <div class="header"> <? include ("./header_banner.php"); ?> </div> <div class="side_image"> <? include ("./side_image.php"); ?> </div> <div class="over_line"></div> <div class="navigation"> <div class="links"> <? include ("./navigation_links.php"); ?> </div> </div> <div class="table"> <table> <tr> <td class="header"> Kontakt </td> </tr> <tr> <td class="big_title"> Website-Betreuung </td> </tr> <tr> <td> Eddy Ahmetaj <br />---- </td> </tr> </table> <form action="./page_c=post.id-75752.php" method="post"> <table> <tr> <td class="entried"> Vielen Dank, Ihre Nachricht wurde erfolgreich versandt! </td> </tr> </table> <table> <tr> <td class="cth-t"><label for="mailto">Email an</label></td> <td class="cth-p"> <select id="mailto" onchange="" name="An" class="cth-i"> <option value="Markus">Markus</option> <option value="Sindy">Sindy</option> </select> </td> </tr> <tr> <td class="cth-t"><label for="Name">Name</label></td> <td class="cth-p"><input class="cth-i" type="text" id="Name" name="Name" size="50" value="" /></td> </tr> <tr> <td class="cth-t"><label for="E-Mail">E-Mail</label></td> <td class="cth-p"><input class="cth-i" type="text" id="E-Mail" name="E-Mail" value="" /></td> </tr> <tr> <td class="cth-t"><label for="Homepage">Homepage</label></td> <td class="cth-p"><input class="cth-i" type="text" id="Homepage" name="Homepage" value="" /></td> </tr> <tr> <td class="cth-t"><label for="Nachricht">Text</label></td> <td class="cth-p"> <textarea rows="10" cols="50" id="Nachricht" name="Nachricht" class="cth-i"></textarea> </td> </tr> <tr> <td class="cth-t">&#160;</td> <td class="cth-p"><input type="submit" name="" value="E-Mail senden" /> <input class="p_send" type="text" name="p_send" value="<?php $_Post['p_send'] ?>" /></td> </tr> </table> </form> </div> <div class="copyright">Copyright by irgendwas.de 2008</div> <div class="verwaltung"><a href="./login,de.htm">Verwaltung</a></div> <div class="adsense"> <? include ("./adsense.php"); ?> </div> </body> </html> <?php if(!empty($_POST['p_send'])) { echo"Vermut auf Spam..."; } else { echo"Entschuldigung, aber Ihre Nachricht konnte auf den Verdacht auf Spam leider nicht verschickt werden! Bitte probieren Sie es erneut!"; } ?> PS.: Meine Website besteht aus PHP, wie man sieht! ;) :D
AlbertoGuilherme schrieb am 15.11.2009 um 22:51 Uhr:
<a href=http://www.playlist.com/blog/entry/12464030467>kamagra 200mg</a> <a href=http://www.playlist.com/blog/entry/12464018691>viagra cheap not genaric</a> <a href=http://www.playlist.com/blog/entry/12464018691>viagra for wemon</a> <a href=http://www.playlist.com/blog/entry/12464018691>generic viagra tadalafil</a> <a href=http://www.playlist.com/blog/entry/12464026115>can zithromax make you high</a> <a href=http://www.playlist.com/blog/entry/12464026115>what does azithromycin cure</a>
Frank schrieb am 03.02.2010 um 18:41 Uhr:
top idee ! es gibt aber keine "if-Schleife", es gibt nur if-Abfragen !


Kommentar schreiben

Name (Pflichtfeld)
Website



Erfasst am: 02.06.2008, 17:18 Uhr
Wörter: 154
Kommentare: 13 (Kommentar schreiben)