PHP Kontaktformular Spam-Schutz

Pfandfinder

Lieutenant
Registriert
Nov. 2020
Beiträge
652
ich habe ein Kontaktformular welches über php eine Mail an mich versendet, oft bekomme ich aber Anfragen bots... jetzt dachte ich baue eine einfache Rechenaufgabe ein, die Lösung wird in einer Session gespeichert und bei der senden.php wird die session mit der Eingabe des Users verglichen.

Reicht das schon aus oder sind so Bots schlau genug, die Session auszulesen und somit immer die Lösung parat haben ?
 
Der Bot kommt ja an die Session Daten nicht ran, sofern du diese nicht zurück z.B. in einen Cookie schreibst. Die Bots sind aber teilweise mittlerweile schlau genug, um eine einfache Rechenaufgabe auch als solche zu erkennen :D
 
  • Gefällt mir
Reaktionen: Pfandfinder
ein extra textfeld mit "display: none" was leer sein muss (sieht user nicht) reicht leider auch nicht aus.
 
Dann sollten die Rechenaufgaben wenigsten zufällig durchwechseln. Einfacher ist es einfach den Recaptcha Dienst von Google einzubauen.
 
  • Gefällt mir
Reaktionen: goonie, Raijin und madmax2010
@kim88 ist mir zuvorgekommen, ich wollte auch gerade reCaptcha posten.
 
Gibt doch genug fertige Lösungen im Netz. Unter anderem auch von Google, wie schon über mir erwähnt wurde.
 
Zuletzt bearbeitet:
ReCaptcha funktioniert zwar, ist aber der neue "Like-Button" von Facebook. Überall zu finden und erlaubt Google dadurch ein seitenübergreifendes Tracking auch wenn man bewusst Google (die Suchmaschine) selbst nicht nutzt.

Das sollte man in seine Überlegungen zumindest mit einbeziehen.

Du kannst testweise auch erstmal ein simples Javascript einbauen um zu testen, ob die Bots das mit ausführen oder nicht. Anderer Ansatz: der Benutzer muss eine bestimmte Mindestzeit auf der Seite zugebracht haben. Niemand füllt ein Formular in 1 Sekunde aus.

Das wären so Ansätze die man mal noch testen kann. (Wie lang verbringt der Bot mit dem Ausfüllen? Versteht der Bot Javascript?)
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: Kontrollfreak, NJay, savuti und eine weitere Person
gute idee, reicht da auch einfach die unixtime als session aus und dann in der .php vergleichen ?
 
kim88 schrieb:
Dann sollten die Rechenaufgaben wenigsten zufällig durchwechseln. Einfacher ist es einfach den Recaptcha Dienst von Google einzubauen.
Und fängt sich damit eine Cookie-Bar und das ganze Datenschutzgedöns ein. Einfach ist was anderes...
 
  • Gefällt mir
Reaktionen: Der Lord und NJay
Pfandfinder schrieb:
gute idee, reicht da auch einfach die unixtime als session aus und dann in der .php vergleichen ?

Ich nehme an dein Formular renderst du auch direkt mit PHP, oder? Dann würde ich da einfach die aktuelle Zeit als Unixtimestamp reinpacken, ja. Session kann man machen, ich würde es einfach in ein Hiddenfield o.ä. packen.

Dann nach dem Abschicken (in einem ersten Schritt) einfach erstmal gar nix tun, außer in der Mail (die dir zugeschickt wird) den Abstand zwischen "gerendert" und "abgeschickt" in Sekunden mit ausgeben.

Wenn du das gleich noch machen willst, kannst du auch ein Formularfeld mit hinzufügen (gern auch mit "display: none" (du weißt ja schon, dass "deine" Bots das nicht ausfüllen) und dort dann via Javascript was reinschreiben (sowas unverfängliches wie "js enabled" oder so) und die Email auch um dieses Feld ergänzen.

Musst dich da bissel rantasten :)

Wenn du dann anhand des "Debuggings" herausgefunden hast, was den Spam kennzeichnet, kannst du zu Schritt 2 übergehen und Eingaben einfach verwerfen.

Beispiele: Bots schicken schneller als X Sekunden ab -> verwirf alles was schneller als X Sekunden ankommt (sofern menschlich nicht (sinnvoll) schaffbar).

Idealerweise reicht das (fürs erste) auch schon und du kannst den Javascript-Test direkt wieder ausbauen. Kampf gegen Bots ist halt immer bisschen wie Hase und Igel. ReCaptcha löst das Problem "nachhaltiger", da sollte man aber die anderen Punkte (bspw. auch Cookiebar, danke für den Hinweis @savuti ) mit beachten.
 
Zuletzt bearbeitet:
recapchta und andere captcha services sind DSGVO relevant (third-party) und sollte daher mit "click-to-play" (captcha starten..) laufen. ich bevorzuge daher doch lieber serverseitige captcha lösungen, der cookie banner als solches ist mutmaßlich illegal, unzureichend und abzulehnen.

im Zend framework und sicher auch in anderen diesbezüglichen libraries sind dazu schon module vorhanden wo man sich auch den einzelnen code anschauen kann wie sowas selbst gemacht wird. es gibt auch php captcha libs, die sich vergleichsweise einfach nutzen lassen, zb eine schnelle suche nach "php math captcha": https://github.com/nettraction/Math_Captcha
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: snaxilian
Einfache Rechenaufgaben stellen kein Hindernis für die Spam-Bots mehr dar. Ich hab auch schonmal gelesen, dass manche Bots besser im Lösen von Captchas sind als Menschen :-)

Alles was von gewissen Lösungen als Menschlich erkannt wird, kann auch simuliert werden. Ist halt nur die Frage wie teuer der Bot ist.
 
Meine Erfahrung zeigt auch, dass ein ReCaptcha immer schlechter ist, als einfach eine eigene Lösung die z.B. eine simple Frage stellt.

Z.B. ein Forum wo es um eine bestimmte Automarke geht, da stellt man einfach eine entsprechend eine Frage die jemand wissen müsste der sich mit dem Auto auskennt. Das schafft normal kein Bot, aber du hast deine Ruhe und der Anwender benötigt keine Lupe für das Captcha :D
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: cmi777
Zurück
Oben