Frage

Jetzt gibt es ein Thema, das viele Möglichkeiten ergriffen werden könnte. Hoffentlich kann ich es de-verschleiern, wie ich mein Problem beschreiben und beginnen Anregungen zu bekommen.

Ich entwickle eine Website, die einen bestehenden ersetzen wird. Historisch gesehen ist eines der Probleme hatten wir Spider-Bots kommen und nach unten Inhalt alles heraus zu saugen. Jetzt haben wir nichts dagegen, dass der Inhalt heruntergeladen wird. In der Tat sind wir froh darüber, aber einige der Bulk-Download- und Download-Beschleuniger mit dem aktuellen Standort als problematisch erwiesen haben.

Was ich suche ist etwas am Anfang meiner php zu sitzen, die so ziemlich zuerst ausgeführt wird. Es dauert einen Fingerabdruck der Seitenanforderung (ip, Referrer, Anfrage uri, Cookies, Sitzungs-ID, was auch immer) und übergibt sie an ... etwas. Das ist etwas, vergleicht dann den Fingerabdruck Fingerabdrücke in der letzten Sekunde oder drei. Es gibt dann eine Nachricht basierend auf einiger vorkonfigurierten Schwelle, was mit dem Wunsch zu tun.

Einige Schwellenwerte:

  • Der Benutzer hat angefordert> x Seiten in den letzten 0.n Sekunden.
  • Der Benutzer hat die gleiche Seite in <0.n Sekunden angefordert.
  • Der Benutzer hat die identischen Daten in eine Form in den letzten n Sekunden vorgelegt.

Sie sehen also, ich bin auf der Suche ein paar ziemlich dichte Fenster. Erkennt solche Dinge überhaupt möglich? Würde ich es tun können mit irgendeiner Art von Datei oder DB-Datenquelle? Was auch immer ich die Fingerabdrücke zwischen Seite Lasten speichern werde eine Menge von Churn erleben, da die meisten Daten werden für eine oder zwei Sekunden gehalten werden. Sollte ich nur etwas, das die Apache-Logs überprüfen gegen die Schwelle analysiert? Soll ich für irgendeine Art von externen Dämon suchen, die die Daten für ein oder zwei Sekunden im Speicher hält, die ich aus dem Skript aufrufen? Gibt es etwas in Apache, der damit umgehen kann und muss ich nur an den Server Kerl nach Punt zu handhaben?

Unter der Annahme, dass dies etwas ist, ich in PHP oder einem genannten externen Daemon tun kann, wie kann ich auf dem Verhalten aus der Schwellenwerte reagieren? Mein Bauch sagt HTTP-Antworten, so etwas wie 408 oder 503, aber mein Bauchgefühl ist oft falsch. Was kann ich tun, um den Client zu sagen, ein wenig zurückzuziehen? Irgendeine Art von "Woah dort" Seite?

War es hilfreich?

Andere Tipps

Wenn Sie nicht Haben eine Softwarelösung zu haben, warum programmiert nicht Ihren Router / Firewall dies für Sie zu handhaben? Ausfiltern von DoS-Attacken (oder deren Äquivalent) ist Teil dessen, was es ist da.

Versuchen mod_evasive

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top