[PHP] Techniken gegen Spam in Foren/GBs etc.

Dieses Thema im Forum "Webentwicklung" wurde erstellt von MakenX, 29. April 2007 .

Schlagworte:
  1. 29. April 2007
    Zuletzt von einem Moderator bearbeitet: 15. April 2017
    Techniken gegen Spam in Foren/GBs etc.

    Nabend Community, da hier oft PHP - Postings zu dem im Topic genannten Thema sind, wollte ich mal ein Sammelthread über dieses Thema aufmachen, besonders da ich zu der Überzeugung gekommen bin, dass es kein alleinrichtiges Rezept gibt sondern der Mix es macht ... Wie geht ihr so vor? Was empfehlt ihr? Den Anfang mache ich ....

    1. HTTP - Request
    Ich benutze ein Objekt was die Formulardaten validiert und ausgibt. Ich unterscheide nicht zwischen GET- und POST - Parametern, obwohl dies in manchen Situation zu empfehlen ist. Aber da ich beide Dinge gleich validiere und bei der Validierung auch keine Ausnahme mache, halte ich dies nicht für kritisch.
    Ich benutze diese Funktion
    PHP:
     Typecasting für HTML  Formulardaten  RR : Board [/ URL zur Validierung
    Mein Request  Objekt geht so vor dass bei Formulardaten  die  mit einem  "s"  für String anfangen , die  Validierung für Strings genutzt wird bei Daten mit einem Parameternamen und einem  "i"  beginnend wende ich typecasting zu int an usw In Allen scripten wird dann typensicher weitergearbeitet und auch so z . B in einer Datenbank gespeichert .

    [
    B ][ U ] 2. Reloadsperre [/ U ][/ B ]
    Eine Reloadsperre wird bei mir standardmäßig mit einer Session vollzogen "Manuelle"  Cookies benutze ich dort eigentlich nicht so gerne Mein Server ist jedoch so eingestellt dass der Sessionmechanismus generell nur mit Cookies arbeitet ohne  die  GET  Anhängsel der SID Hier kann  die  Kritik eingewendet werden dass manch ein BOT keine  ( Session )- Cookiedaten im HTTP  Header mitsendet aber da kommen wir zu den nächsten zwei Punkten  ....

    [
    B ][ U ] 3. Variabler Absendebutton  [/ U ][/ B ]
    Der Button zum Absenden wird mit einem zufälligen Namen benannt Dieser Name wird in einer Session gespeichert Sollte der Name des Buttons nicht mit dem generierten Namen in der Session übereinstimmen wird nicht gepostet Ich denke dieses Vorgehen hat  die  Wirkung dass Formularen nicht so schnell exploited werden können .

    [
    B ][ U ] 4. Captchas [/ U ][/ B ]
    Captchas sind diese kleinen Bilderrätsel  die  man z . B bei Rapidshare findet Ich benutze für meine Formulare das PEAR  Paket TEXT_CAPTCHA wofür ich zusätzlich einen Adapter gebaut habe der mit statischen Methoden arbeitet und mir so ermöglicht den Captchamechanismus zu ändern / auszutauschen ohne all meine Quellcodes bearbeiten zu müssen Das zu suchende Wort wird in der Session gespeichert und muss in einem Formularfeld mit variablen Namen  ( siehe 3 eingetragen werden Sollten  die  POST  Daten nicht mit den Sessiondaten übereinstimmen wird ein Fehler geworfen

    Mit 3 u 4 zwinge ich den User den Sessionmechanismus zu benutzen und binde ihn zusätzlich mit einer   .... 

    [
    B ][ U ] 5. Datenbankspeicherung  ...[/ U ][/ B ]
    ...
    an seine Session Ich logge bei jedem Login der User / bei jedem Postversuch  die  IP in Kombination mit UserAgent Timestamp PHPSESSID etc in einer Datenbank Sollte ein Datenbankeintrag schon vorhanden sein wird er natürlich nicht nochmal reingeschrieben Diese Tabelle kann / könnte auch für andere Zwecke genutzt werden wie z . B IP - Block etc . ....  Dieses Datenbanklogging hat auch den Vorteil dass es so sehr schwer gemacht wird  die  Session eines anderen Users zu klauen und anderen Schindluder damit zu treiben .

    [
    B ][ U ] 6. Datenbankfeder richtig erstellen  ...[/ U ][/ B ]
    Um zusätzlich Redundanzen zu vermeiden und  die  Datenbank ordentlich aufzusetzen versuche ich so viele Felder wie möglich mit einem Index zu versehen und diese unique zu setzen .

    So bitte weiter im Text ... Da ich morgen arbeiten muss und es eigentlich schon recht spät für mich ist hoffe ich dass meine nicht allzu deutlichen Beschreibungen mein Vorgehen recht gut verdeutlichen  ....
     
  2. 30. April 2007
    AW: Techniken gegen Spam in Foren/GBs etc.

    ich mach mal weiter:

    7. Bild mit Rechenaufgabe
    Man benutzt wie bei den Captchas ein Bild in dem eine kleine Rechenaufgabe dargestellt wird. Diese Sollten jedoch so einfach wie möglich gehalten werden. z.B. 1+2 oder 3-1. Das Ergebnis wird dann in einer Session abgespeichert und mit der Eingabe der Users verglichen. Falls der User rechnen kann und das richtige Ergebnis eingetragen hat. kann er posten.

    8. Sprachmitteilung
    Etwas umständlicher, aber bis jetzt relativ sehr sicher, ist das Vorlesen lassen eines Schlüssels. Diesen Schlüssel muss man dann eingeben. Die Sprachmitteilung soll nur die Prüfungsnr vorlesen. bsp: 12345. Dies kann gut durch eine Flash lösung bzw einfach durch zufall abspielende mp3, wma etc. gelöst werden. Das auslesen der Sprache ist nach meinen Kenntnissen noch nicht allen Bots bekannt. Also wird reden hier von einer Sicherheit von mehr als 90%.
     
  3. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.