Spambots unter phpBB verhindern

    Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

    • Alles was es für den User komplizierter macht ist nicht nutzbar ;)

      Aber bin auf eine (so denke ich) ganz gute Idee gekommen
      Manche denken jetzt: Behalts lieber für dich, bevor der Mechanismus wieder ausgehebelt wird.
      Aber ich probiers einfach mal aus. Ich denke, dass Spambots nur großflächig funktionieren und kaum individuelle Anpassungen haben, daher wirds funktionieren :lol:

      Die Anpassung bewirkt, dass 15 Sekunden seit Aufruf der Formularseite und dem Eintrag in die Datenbank vergangen sein müssen

      Hier etwas detaillierter, falls es andere nachahmen wollen
      Ich hab in der templates/subSilver/profile_add_body.tpl ein verstecktes Feld integriert, welches den Zeitstempel wiedergibt

      Quellcode

      1. <form action="{S_PROFILE_ACTION}" {S_FORM_ENCTYPE} method="post">
      2. <input type="hidden" name="nospam" value="{timestamp}" />
      3. {ERROR_BOX}
      4. ...


      dann war die Datei includes/usercp_register dran

      dort im template parser die time-Variable ergänzen

      Quellcode

      1. $template->assign_vars(array(
      2. 'timestamp' => time(),
      3. 'USERNAME' => isset($username) ? $username : '',
      4. 'CUR_PASSWORD' => isset($cur_password) ? $cur_password : '',
      5. 'NEW_PASSWORD' => isset($new_password) ? $new_password : '',
      6. ...


      und irgendwo vor dem einfügen in die datenbank eine abfrage ergänzen, dass 15 Sekunden seit Aufruf des Formulars vergangen sein müssen

      Quellcode

      1. else
      2. {
      3. ....
      4. if(!isset($_POST['nospam']) || $_POST['nospam'] > time() - 10)
      5. die('Du warst zu schnell f&uuml;r uns!');
      6. //
      7. // Get current date
      8. //
      9. $sql = "INSERT INTO " . USERS_TABLE . " (user_id, username, user_regdate, user_password, user_email, user_icq, user_website, user_occ, user_from, user_interests, user_sig, user_sig_bbcode_uid, user_avatar, user_avatar_type, user_viewemail, user_aim, user_yim, user_msnm, user_attachsig, user_allowsmile, user_allowhtml, user_allowbbcode, user_allow_viewonline, user_no
      Alles anzeigen


      Wie gesagt.. mit ein individuellem hack sehr leicht auszuhebeln.. aber es ist ein experiment - mal sehen wie lange es schützt
    • du meinst wegen Mia?
      die hat sich garantiert manuell angemeldet.. die Posts waren nicht alle zur exakt gleichen Zeit und außerdem hat sie eine E-Mail Adresse mit Vor- und Zuname angegeben

      also ich bin mit der Anti-Spam Maßnahme bisher zufrieden..
      Vielleicht sollt ich ein [coderwiki]Informationen/Honeypot[/coderwiki] Projekt starten und IP Adressen, Benutzernamen und E-Mail Adressen veröffentlichen
    • darf ich diesen thread mal aufgreifen :)

      wie sieht es aus wenn ich über css meine form fields "dynamisch" anordne

      zb.

      Quellcode

      1. <input name="feld1_angezeigt_als_feld2" type="text"><span class="text1_angezeigt_als_text3">e-mail</span>
      2. <input name="feld2_angezeigt_als_feld3" type="text"><span class="text2_angezeigt_als_text1">user-name</span>
      3. <input name="feld3_angezeigt_als_feld1" type="text"><span class="text3_angezeigt_als_text2">password</span>


      angezeigt würde dann
      [feld3] user-name
      [feld1] password
      [feld2] e-mail

      kann man mit sowas die bots "austricksen" ?
      - ich weis, dass php 4 veraltet ist und ich lieber php 5 nutzen sollte
      - ich mache das ganze nicht nur um mein projekt zu erstellen, sondern um das ganze auch zu verstehen
      - wenn das ganze in php 4 funktioniert will ich es sauber nach php 5 migrieren
      - kurz gesagt ich WILL LERNEN VERSTEHEN und restlos BEGREIFEN wie das was ich möchte in php 4 / 5 / 6 umgesetzt werden soll
    • HiHo,

      Eine Aufwendigere Lösung währe, so nutze ich es für das phpBB3.

      Prüfen ob das Registrierungsformular über einen Bwrowser aufgerufen worden ist, wenn nicht auf google umleiten.
      Allerdings sollte man da immer schauen das man alle Brwoser mit einschlisst.

      Zusätzlich ist das Posten eines Links oder images in den ersten 3 Beiträgen nicht gestattet
    • Also ich finde meinen Spamschutz, den ich vor 3 Jahren entwickelt habe und wie er oben erläutert wird immer noch am besten ;)
      Zeitstempel versteckt im Formular unterbringen und beim sichern prüfen, dass er mindestens 10 Sekunden alt ist.

      @Tigerente: Dein Schutz arbeitet mit der Reihenfolge der POST Elemente? Da assoziative Arrays gehasht sind und die Reihenfolge im Allgemeinen egal ist, weiß ich nicht ob sich jeder Browser an die Reihenfolge hält. Wenn das mit den gängigen Browsern funktioniert - warum nicht!
    • naja nicht ganz :)

      die Reihenfolge ist mir eigentlich wayne.
      meine form fields haben von haus aus schonmal keine namen wie "username" und "password" sondern vielmehr eine gecryptete
      (Salt) - Datum/Uhrzeit (tages- bzw. stundenwechsel inklusive - aufruf 01.01.1900-23:58 |absenden 02.01.1900-00:02 klappt trotzdem)
      + username oder userpass
      und das ganze als md5/sha1 o.ä.
      dem user ist es ja schliesslich egal wie das formfield heisst solange er/sie weis was dort eingetragen werden soll :)
      bei der ausgabe werden die felder halt nicht in der gleichen reihenfolge (sondern random sortiert) ausgegeben und über css an der stelle angezeigt, wo sie hingehören.

      das klappt natürlich nur, wenn die bots nicht via <<tab>> von einem eingabefeld ins nächste springen

      meine frage sollte eigentlich darauf abzielen :)

      also zusammengefasst haben meine formfields in regelmäßigen abständen neue nicht eindeutig verifizierbare namen und die ausgabe der formfields ist zufallsbedingt (durch javascript und css wird die funktionalität so gestalltet, dass der user dieses formular nicht von einem "normalen" unterscheiden kann - hoffe ich)

      @d0nut : Quellcode gibts nach fertigstellung zum download, damit du den mal begutachten kannst :D
      - ich weis, dass php 4 veraltet ist und ich lieber php 5 nutzen sollte
      - ich mache das ganze nicht nur um mein projekt zu erstellen, sondern um das ganze auch zu verstehen
      - wenn das ganze in php 4 funktioniert will ich es sauber nach php 5 migrieren
      - kurz gesagt ich WILL LERNEN VERSTEHEN und restlos BEGREIFEN wie das was ich möchte in php 4 / 5 / 6 umgesetzt werden soll