2009-05-05 9 views
2

Ich habe bereits die meisten Fragen über Techniken zur Vermeidung von Spam gelesen, aber keiner von ihnen scheint die Verwendung der Sitzung des Browsers vorschlagen.Formular Spam mit der Sitzung zu verhindern

Wir haben ein Formular, das eine E-Mail an die angegebene E-Mail-Adresse sendet und die Idee der Verwendung von "Captchas" oder Javascript nicht mochte, da wir die Benutzerreise für diejenigen ohne Javascript einfach und zugänglich halten wollten.

Wir möchten das Session-Objekt verwenden, um Formular-Spam zu verhindern. Unsere Webapp wird auf Weblogic Server 10 mit Struts entwickelt.

Die Lösung ist, wenn das Formular geladen wird, würde es eine Variable im Sitzungsobjekt festlegen. Sobald Sie auf "Senden" klicken, prüfen wir, ob die Sitzung für die Variable ausgeführt wurde. Keine Variable, umleitung auf das Formular. Variable existiert senden Sie die E-Mail.

Ich würde wirklich jede Meinung/Gründe schätzen, warum dies eine schlechte Idee sein könnte, so dass wir diese Lösung gegen andere bewerten können.

Vielen Dank, Jonathan

Antwort

0

Session-Objekte können je nach Ausführung, relativ schwer in Bezug auf die Ressourcennutzung sowie etwas langsam. Zusätzlich kann der Spammer, wenn er erkennt, wie Sie ihn blockieren, einfach jedes Mal eine neue Sitzung starten, wenn er das Formular antrifft, indem er das Sitzungs-Cookie nicht zurücksendet.

Also, weil diese Technik darauf beruht, dass sich der Client gut benimmt und das erwartete Verhalten relativ einfach zu verhindern ist, ist es möglicherweise weniger nützlich als andere Möglichkeiten, das Problem zu lösen.

0

Vielen Dank für Ihre Antwort cdeszaq, aber ich bin mir nicht sicher, ob Sie meine Frage falsch verstanden haben.

Damit die Formularübergabe erfolgreich abgeschlossen werden kann, müssen Clients das Formular laden, um das Sitzungsobjekt ordnungsgemäß einzurichten. Nur wenn die Sitzung im richtigen Zustand ist, kann eine E-Mail gesendet werden.

Wenn der Spammer den Sitzungscookie nicht zurücksendet, kann er das Formular nicht spammen, da er nicht auf meine Formularseite gelangt ist, die die richtige Sitzung erstellt.

Ich stimme zu, dass die Verwendung des Sitzungsobjekts zusätzliche Ressource erstellen würde. Unsere Implementierung würde einfach (unter Verwendung von JSP) session.setAttribute("formLoaded", true); aufrufen und in meiner Struts Aktion würde ich einfach session.getAttribute("formLoaded"); überprüfen.

+0

Richtig, so kann das gleiche System mit einer 2-Seite-laden-Setup verwendet werden, um Spam ... Treffen Sie das Formular, um die Sitzung zu erhalten, und senden Sie den Spam. Wiederholen Sie dies und Sie haben eine einfache Möglichkeit, um diese Methode zu spammen. – cdeszaq

1

Es gibt nichts, was einen Spammer daran hindern könnte, den Prozess des Herunterladens Ihres Formulars zu automatisieren (wodurch das Cookie erzeugt wird) und es abzuschicken. Es kann eine leichte Belastung für den Spammer bedeuten, aber eine triviale.

Zum Beispiel kann ein Formular einfach heruntergeladen und übermittelt werden, wobei Cookies mithilfe eines Befehlszeilentools wie cURL beibehalten werden. Dies kann dann von einem Skript wiederholt ausgeführt werden.

0

Ich frage mich, ob dies funktionieren könnte:

  1. Jedesmal, wenn Sie Seite/Form übertragen, erstellen Sie ein Zufallsbit Text
  2. Setzen Sie diesen Text in der Sitzung
  3. Fügen Sie diesen Text als verstecktes Feld in Form einreicht
  4. Benutzer das Formular
  5. Aktion den verborgenen Text auf den Wert in der Session vergleicht - wenn eine Übereinstimmung da ist, senden die E-Mail

Da ein Hacker keinen zufälligen Wert in die Sitzung schreiben könnte, wären sie nicht in der Lage zu spammen. Recht?

+0

Sie könnten einfach das Formular einreichen, den Spam nach Belieben ausfüllen und alle versteckten Feldwerte einschließen. – cdeszaq

+0

Ich dachte, das ursprüngliche Problem war folgendes: Ein Spam-Programm könnte eine Aktion senden, ohne das Formular zu verwenden. In meinem Szenario ist dies nicht möglich; Das Formular muss zuerst angezeigt werden, und die richtige zufällige Zeichenfolge wird in der nachfolgenden Übergabe an die Aktion platziert. Die von Ihnen erwähnte "2-Seiten-Lade" -Operation würde dies umgehen, wenn diese zufällige Zeichenfolge von der Formularseite abgekratzt würde. Aber vielleicht würde es, wie die "orangefarbene" Captcha-Methode, für die Zwecke des ursprünglichen Frage-Fragestellers ausreichen. – Glen

+0

Wenn das Problem die Einreichung ist, ohne das Formular zu verwenden, dann würde die Lösung des ursprünglichen Posters (die sich auf den Sitzungscookie stützt) ebenso funktionieren wie Ihre. Ich weiß nicht, wie üblich es für Formular-Spam-Software ist (ich nehme an, es gibt so etwas), um das Formular zuerst zu laden, aber da es einfach zu implementieren wäre, würde ich davon ausgehen, dass eine Lösung davon abhängt, nicht zu laden die Form wird zuerst nicht sehr nützlich sein. (Das "orangefarbene" Captcha funktioniert, weil ein Spammer die Software auf die bestimmte Site ausrichten müsste. Das wäre in diesem Fall nicht notwendig.) –

Verwandte Themen