Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 11

Thema: Wir basteln uns einen Spam-Schutz für Foren

  1. #1
    Neues Mitglied Avatar von Pierre
    Registriert seit
    09.06.2006
    Ort
    Bonn
    Beiträge
    14

    Standard Wir basteln uns einen Spam-Schutz für Foren

    Hallo,

    seit kurzem habe ich massive Probleme mit Spam in meinem selbstentwickeltem Forum. Da ich nicht auf die Möglichkeit verzichten möchte, auch ohne Anmeldung das schreiben zu ermöglichen, musste ich mir ein paar Gegenmaßnahmen überlegen.

    Hier sind ja schon stellenweise ein paar Ideen zusammengetragen wurden. Vielleicht können wir uns über eine konkrete Implementierung austauschen und diese verbessern.

    Ich habe bei mir zwei Hürden eingebaut, die bisher in den letzten paar Tagen schon fast 1000 Bots aufgehalten haben.

    Hürde 1: Individueller Zeitstempel

    Jedes Formular bekommt zwei versteckte Variablen mit folgendem Inhalt:
    Code:
    private function addAntiSpamHash()
    	{
    	if (!$this->User->isOnline())
    		{
    		$time = time();
    		$this->addHidden('AntiSpamTime', $time);
    		$this->addHidden('AntiSpamHash', sha1($time.$this->Settings->getValue('antispam_hash')));
    		}
    	}
    Wird das Formular abgeschickt, so wird folgende Methoden aufgerufen:
    Code:
    private function checkAntiSpamHash()
    	{
    	if (!$this->User->isOnline())
    		{
    		$now = time();
    
    		try
    			{
    			$time = $this->Io->getInt('AntiSpamTime');
    			$hash = $this->Io->getHex('AntiSpamHash');
    			}
    		catch (IoRequestException $e)
    			{
    			sleep(5);
    			$this->showFailure('Ungültige Formulardaten empfangen. Geh weg!');
    			}
    
    		if ($hash != sha1($time.$this->Settings->getValue('antispam_hash')))
    			{
    			sleep(5);
    			$this->showFailure('Manipulierte Formulardaten empfangen. Geh weg!');
    			}
    
    		if ($now - $time > $this->Settings->getValue('antispam_timeout'))
    			{
    			$this->showWarning('Deine Zeit ist abgelaufen. Schicke das Formular bitte erneut ab, und zwar innherlab der nächsten '.$this->Settings->getValue('antispam_timeout').' Sekunden.');
    			}
    		elseif ($now - $time < $this->Settings->getValue('antispam_wait'))
    			{
    			sleep($this->Settings->getValue('antispam_wait'));
    			$this->showWarning('Du warst zu schnell. Schicke das Formular bitte erneut ab.');
    			}
    		}
    	}
    Das ist natürlich trivial, sperrt aber wohl die meisten Bots aus. Denn der Bot wird erkannt wenn:
    * er schickt die versteckten Felder nicht mit
    * er schickt immer die gleichen Feldinhalte mit (hat also nur einmal das Formular analysiert)
    * er versucht den Zeitstempel zu ändern
    * er schickt seine Daten zu schnell ab

    Was hier noch durchkommt, kann man ganz gut mit einer Blacklist in den Griff bekommen. Hier bei vergleiche ich alle im Beitrag enthaltenen Domains mit einer Liste. Eigentlich könnte man solche Listen auch Board-übergreifend nutzen.

    Was haltet ihr davon? Was könnte man verbessern?

  2. #2
    Neues Mitglied
    Registriert seit
    19.04.2006
    Beiträge
    19

    Standard

    Zitat Zitat von Pierre
    Was haltet ihr davon? Was könnte man verbessern?
    Wie gehen Bots eigentlich mit Cookies um?
    Könnte mir vorstellen das da etwas gepfuscht wird.
    zB ein Cookie setzen der schon abgelaufen ist (Datum<2005), wenn der trotzdem Abfragbar ist-> Tonne.
    oder Cookie setzen der für eine andere Domain ist usw.

    oder den Beitrag zum Schein annehmen, sichtbar ist er aber nur für die eine IP, und das auch nur für eine begrenzte Zeit.

    Bin kein Experte nur mal so als Idee

  3. #3
    Pöhser Purche Avatar von homer
    Registriert seit
    18.07.2005
    Ort
    Deep Down Oberfranken
    Beiträge
    2.938

    Standard

    Zitat Zitat von Pierre
    Was haltet ihr davon? Was könnte man verbessern?
    Hmm, die "versteckten" Felder sind nur dem Betrachter im Browserfenster versteckt. Eine Quelltextanalyse, wie sie anscheinend einige GB-Spammer durchführen, findet solche Felder.
    Ich würde beim SHA1-(oder MD5- oder wasweisichnoch-)Hash noch ein eigenes Passwort mitschicken, so in der Art
    Code:
    $time = time();
    $passwort = '_Zeo+a+qhFao1wfNFbQjV+fhtVUKZUbVpLBhcsbKzXVaLhLoqk';
    $hash = sha1($time.'-'.$passwort);
    $hash und $time versteckt im Formular mitschicken. Wenn jemand $time manipuliert kann man das bequem prüfen, weil ja $passwort fest im Quelltext hinterlegt wurde.

    Sarkasmus. Weil es illegal ist, dumme Leute zu schlagen.

  4. #4
    Neues Mitglied Avatar von Pierre
    Registriert seit
    09.06.2006
    Ort
    Bonn
    Beiträge
    14

    Standard

    Hallo Homer: Ich setze die Hash-Funktion bereits auf time() und einen nur dem Server bekannten String an. Klar, kann ein Spammer den Quelltext analysieren. Allerdings ist es unmöglich, an gültige Hashwerte zu kommen, ohne das Formular erneut aufzurufen. Und das machen die Bots bisher kaum.

    Konkret tut das die Zeile
    Code:
    sha1($time.$this->Settings->getValue('antispam_hash'))
    Wobei antispam_hash ein serverseitiger, aber konstanter Wert ist.
    Geändert von Pierre (09.06.2006 um 12:04 Uhr)

  5. #5
    Neues Mitglied Avatar von Pierre
    Registriert seit
    09.06.2006
    Ort
    Bonn
    Beiträge
    14

    Standard

    Zitat Zitat von der Spandauer
    Wie gehen Bots eigentlich mit Cookies um?
    Könnte mir vorstellen das da etwas gepfuscht wird.
    zB ein Cookie setzen der schon abgelaufen ist (Datum<2005), wenn der trotzdem Abfragbar ist-> Tonne.
    oder Cookie setzen der für eine andere Domain ist usw.

    oder den Beitrag zum Schein annehmen, sichtbar ist er aber nur für die eine IP, und das auch nur für eine begrenzte Zeit.

    Bin kein Experte nur mal so als Idee
    Das mit dem Cookie könnte ganz interessant sein; allerdings weiß ich nicht, was die Browser sagen, wenn man versucht ungültige Cookies zu setzen.

    Den Beitrag zum Schein anzunehmen könnte nach hinten los gehen. Selbst wenn die Bots sowas prüfen (was ich nicht glaube), so würden sie dann erst recht weitermachen, da es vermeintlich erfolgreich war.

  6. #6
    Neues Mitglied
    Registriert seit
    19.04.2006
    Beiträge
    19

    Standard

    Zitat Zitat von Pierre
    Den Beitrag zum Schein anzunehmen könnte nach hinten los gehen. Selbst wenn die Bots sowas prüfen (was ich nicht glaube), so würden sie dann erst recht weitermachen, da es vermeintlich erfolgreich war.
    Der Täuschungsversuch ist ja auch nur für die Wetware, der soll denken sein Bot funktioniert. Fazit: Er rüstet sein Bot nicht auf.
    Wenn er mehrmals postet kann man ihn ja mit einer Teergrube o.ä. ausbremsen. Auch berechtigte User werden wohl nicht in Sekundentakt Beiträge abfeuern, also könnte man alle für mindestens 1 Minute ausbremsen, wenn sie einen zweiten Beitrag (selbe IP) abfeuern.

  7. #7
    Neues Mitglied Avatar von Pierre
    Registriert seit
    09.06.2006
    Ort
    Bonn
    Beiträge
    14

    Standard

    Ich habe das Bot-Verhalten mal etwas anhand des Apache-Logs analysiert. Das Ergebnis: Sie kommen mit Cookies und Zeitverzögerungen klar und laden auch das Formular neu. Was sie aber nicht können: CSS interpretieren und Bilder laden. Das nutze ich nun aus.

  8. #8
    Neues Mitglied
    Registriert seit
    01.05.2006
    Beiträge
    11

    Standard

    Kann man nicht so ein Bild mit Buchstaben einbauen?

  9. #9
    Neues Mitglied
    Registriert seit
    18.06.2006
    Beiträge
    4

    Standard

    Zitat Zitat von spamvamp
    Kann man nicht so ein Bild mit Buchstaben einbauen?
    genau diese Frage hätte ich auch aber ich glaub wirklich viel bringts doch sicher auch nicht oder?

    In meinem Blog ist es auch mit diesem Feld geschützt und trotzdem kommen welche durch

  10. #10
    Neues Mitglied Avatar von Stefreak
    Registriert seit
    20.06.2006
    Beiträge
    17

    Standard

    Zitat Zitat von Fine
    In meinem Blog ist es auch mit diesem Feld geschützt und trotzdem kommen welche durch
    Es ist ja auch oft so, dass diese blöden Bots nur halbautomatisch sind, dh die Bildchen werden manchmal von Menschen abgetippt


    MfG
    Stefreak
    whois:http://www.computerstefreak.de - Gästebuch mit geknacktem Spamschutz :(

Seite 1 von 2 12 LetzteLetzte

Lesezeichen

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  
Partnerlink:
REDDOXX Anti-Spam Lösungen