Ankündigung

Einklappen
Keine Ankündigung bisher.

Spamschutz bei Formaular verarbeitung

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Spamschutz bei Formaular verarbeitung

    Servus liebe leuts,

    wie immer in den letzten tagen habe ich mal wieder eine Frage. Diesmal handelt es sich um eine Spam verhinderung. Und zwar im folgenden beispiel:

    Ich habe ein Kontakt-Formular geschrieben. Nachdem man alles erfolgreich ausgefüllt und abgeschickt hat und die email dann auch versendet wurde bekommt der User eine Erfolgsbestätigung in form einer echo ausgabe. Nur leider wars das dann auch schon. Wenn der user jetzt die seite neu lädt bzw. F5 auf seiner Tastatur Festklebt (um es mal krass auszudrücken) wird die email immer weider (bei jedem seite-aktuallisieren) erneut abgeschickt. Das heisst der User könnte ganz einfach per F5 Taste mein Postfach vollspammen und ich darf dann am ende Sortieren.

    Um dies zu verhindern suche ich eine effektive Lösung. Was würdet Ihr mir empfehlen? Ich dachte an eine art IP Sperre für ca. 5 minuten oder so. Doch bevor ich da loscode wollt eich trotzdem nochmal nach lösungswegen nachfragen. Evtl. gibt es ja noch etwas besseres als eine IP Sperre.

    Desweiteren würde ich gern eine automatische weiterleitung nach dem absenden des Formulars erstellen. Doch das geht soweit ich weiss nur im headbereich mit html, oder? könnt ihr mir da evtl. auch noch was empfehlen bittew? Danke schonmal im voraus.

    P.S.: Die Eingabe im Formular habe ich schon halbwegs vor spam geschützt, bzw. eingegrenzt. Die Pflichtpfelder dürfen nciht leer sein und auch das eingabeformat (email überprüfung mit regex etc.) habe ich drin. Es geht also nur um diese reload sperre.
    .visit » Tolga-Tanik.de
    .visit » TolgaTanikFoto @ Facebook
    .visit » Tolga Tanik Fotografie @ YouTube


  • #2
    headerweiterleitung mit php funktioniert mit der funktion header(),
    aber nur, wenn noch kein zeichen an den browser gesandt wurde (leerzeichen oder buchstaben)-
    reloadsperre:
    *cookies,
    *sessions,
    *ip-block (ip+datum+uhrzeit in ne datei/db pinseln und nachprüfen, ob schon vorhanden),
    *weiterleitung(siehe oben)
    Karteikasten
    "Es gibt auch Linux-Aussteiger. Aber die Rückfallquote steigt mit jeder Win-Version." - Walter Saner in de.newusers.questions

    Kommentar


    • #3
      Ja, eine headerweiterung kann ich in dem fall ja nciht nutzen da ich den content ja je nach link aufrufe und der header ja schon mit aufruf der index.php gesendet wurde.
      cookies und sessions habe ich atm noch nicht da ich noch keine userverwaltung habe.

      Also bleibt wohl vorerst nur die ip sperre übrig.
      .visit » Tolga-Tanik.de
      .visit » TolgaTanikFoto @ Facebook
      .visit » Tolga Tanik Fotografie @ YouTube

      Kommentar


      • #4
        Auch ohne Userverwaltung kannst du $_SESSION[''] nutzen.
        Du kannst dem Formular ein verstecktes Feld ( <input type="hidden" value="ZUFALLSWERT" name="checkfield"> ) mitgeben, in dem du z.b. einen md5hash aus zeit+ip. mit übergibst

        Sobald Du das Formular überprüfst, schaust du nach, ob der Hashwert des Formulars schon in der Session oder alternativ in einer Datenbank steht
        Wenn ja, wurde das Formular abgeschickt, Du sendest die mail nicht nocheinmal.
        Wenn nicht, speicherst du diesen Zufallswert in die Datenbank bzw Session und schickst die mail los.

        Du kannst die Session / Datenbank ja auf x-Einträge beschränken, oder jedes mal einen Zeitstempel mitspeichern und die Eatenbank leeren, wenn der letzte Zugriff min x-minuten lang her ist.

        Wenn der user jetzt das Formular nocheinmal ausfüllt (von hand) könnte er trotzdem nochmal senden, ohne das die IP gesperrt ist, da nur der Hash des zuletzt gesendeten Formular abgespeichert wurde.

        Kommentar


        • #5
          Alternativ könnest du den hash wert auch schon beim ausliefern des formulars abspeichern und die mail nur versenden, wenn der wert im $_POST mit dem gespeicherten übereinstimmt. anschliessend löschst du den wert direkt und das "selbe" >Formular kann nicht mehr per reload versendet werden. hier müssen natürlich irgendwann die einträge gelöschtw erden von Formularen, die gar nicht ausgefüllt und daher nie als mail versendet wurden.

          Kommentar


          • #6
            Passend zum Thema Spamschutz: Animierte Captcha sind hier zufinden. Ich hab die Captcha02 mal benutzt, das geht gut, die anderen haben mir zulange für den Aufbau benötigt.

            Link: Unique PHP Classes

            Noch mehr: animiertes Sicherheitsfeld - animierte Captcha - grafischer sicherheitscode

            Kommentar

            Lädt...
            X