it-swarm.com.de

POST Angriff auf meine Website

Ich habe eine Website (humanisms.co.uk), die ein Abstimmungssystem enthält, dh. Der Benutzer klickt auf "Up" und sendet einen Parameter über AJAX an ein PHP-Skript. Das PHP fügt eine Stimme in die MYSQL-Datenbank ein und die neue "Up" -Stimme wird an die Seite zurückgesendet Aktualisieren Sie die Stimmenzahl. Das funktioniert prima, aber ich habe festgestellt, dass die Anzahl der Stimmen für eine meiner Fragen in der letzten Nacht gestiegen ist. Ich habe meine Webhosts-Zugriffsprotokolle angezeigt und die folgende Zeile gesehen:

108.27.195.232 - - [03/Mar/2011:15:20:18 +0000] "POST /vote.php HTTP/1.1" 200 2 "http://www.humanisms.co.uk/" "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_6; en-US) AppleWebKit/534.16 (KHTML, like Gecko) Chrome/10.0.648.114 Safari/534.16"

Dies wird weit über 100 Mal und manchmal mehr als einmal pro Sekunde wiederholt. Jetzt weiß ich, dass sie wahrscheinlich nicht dort sitzen und auf Abstimmung klicken, sondern eine Art PHP-Schleife ausführen.

Ich mache mir keine Sorgen um SQL-Injection, aber was kann ich tun, um zu verhindern, dass dieselbe IP-Adresse dies tut, oder was kann ich im Allgemeinen tun, um dieses Szenario zu vermeiden?.

Ich sollte auch sagen, dass es kein Login gibt, so dass jeder über das Abstimmungssystem klicken kann.

Vielen Dank

2
benhowdle89

Von diese Frage :

Sie könnten verschiedene Dinge tun, einschließlich:

Verwenden Sie ein CAPATCHA wie reCAPTCHA

Verwenden Sie ein Feld, bei dem der Benutzer eine Frage wie 5 + 3 beantworten muss. Jeder Mensch kann darauf antworten, aber ein Bot weiß nicht, was zu tun ist, da er Felder basierend auf Feldnamen automatisch ausfüllt. Das Feld ist entweder falsch oder fehlt. In diesem Fall wird die Einreichung abgelehnt.

Verwenden Sie ein Token, fügen Sie es in eine Sitzung ein und fügen Sie es dem Formular hinzu. Wenn das Token nicht mit dem Formular übermittelt wird oder nicht übereinstimmt, wird es automatisiert und kann ignoriert werden.

Suchen Sie nach wiederholten Einsendungen von derselben IP-Adresse. Wenn Ihr Formular nicht zu viele Anfragen erhalten sollte, aber plötzlich von einem Bot getroffen wird, sollten Sie die IP-Adresse vorübergehend sperren.

3
John Conde
  • Log IPs, nur 1 Stimme pro IP
  • CAPTCHCA
  • Verwenden Sie die integrierte serverseitige Skriptfunktionalität, um sicherzustellen, dass die Post-Anfrage von demselben Server stammt
2
Tom Gullen

Das gesamte Abstimmungssteuerelement kann mit einem Javascript versehen werden, sodass es nicht Teil der HTML-Quelle auf Ihrer Seite ist. Um die "Sicherheit" zu erhöhen und das Risiko eines Missbrauchs durch Automatisierung zu verringern, könnten Sie

  1. aktiviere das 'onclick'-Ereignis nur, wenn du erkennst, dass sich die Maus in einem Bereich dieses Steuerelements bewegt.

  2. überprüfen Sie im serverseitigen Skript, ob ein URL-Verweis vorhanden ist (mindestens die Domain).

  3. sie können sogar einen Hash Ihrer JavaScript-Methode 'caller' berechnen und ihn in getarnter Form an das 'vote'-Steuerelement senden, um zu überprüfen, ob der' onclick 'tatsächlich aus Ihrem eigenen Skript stammt (der Hash würde in verschiedenen Browsern unterschiedlich sein) )

Aber der Hauptausgangspunkt ist, dass der gesamten Steuerung ein Javascript injiziert wird. Auf diese Weise wird auch das Verhältnis von Text zu HTML auf der Seite verbessert, da Sie weniger Mist im Seiteninhalt haben, den eine Suchmaschine sieht (obwohl sie kein Javascript sieht).

Auf diese Weise müssen Sie diese dummen "Captchas" nicht verwenden und die kostbare Zeit Ihres Besuchers beanspruchen, indem Sie sich von ihnen als Roboter beweisen lassen ...

0
Denis Volovik