Raketenwilli: Wie kann PHP / SQL gleichzeitige Anfragen abwehren?

Beitrag lesen

Als Gegenmaßnahme speichere ich Startzeit und IP, dieselbe IP wird erst 3 sec später wieder bedient.

Doch das Wegschreiben der IP in die Datenbank dauert

Das liest sich wie:

  • „Problem: Durch die vielen Zugriffe von einzelnen IPs wird meine Datenbank überlastet.“
  • „Ha! Ich hab's! Ich schreibe die Zugriffe aller Clients in diese Datenbank und zähle jeweils wie oft von dieser IP schon zugegriffen wird!“

und entspricht, vom Schema her, dieser Quer„denker“-Lösung:

  • „Ich komme mit dem Fahrrad kaum den Berg hoch.“
  • „Ha! Ich hab's! Wenn ich mir einen schweren Rucksack aufsetze wird das bestimmt besser!“

oder dieser:

  • „Die Gäste beschweren sich, dass die Bedienung so langsam erfolgt.“
  • „Ha! Ich hab's! Vor dem Servieren sollen die Kellner mit dem ICE zur nächsten Stadt und zurück und den Gästen sagen, dass sie mit 250 Sachen unterwegs waren!

Jetzt denken wir mal nicht „quer“, sondern beachten die Fakten und handeln zielorientiert und pragmatisch:

Die beste Lösung für diese Problemgruppe heißt „mod_evasive“. Das muss Dein Hoster installieren. Als Kunde eines Massenhosters kannst Du (hoffentlich) in der .htacces den Zugriff von der betreffenden IP dauerhaft verbieten.

Hast Du schon versucht, den Abfrager mit der robots.txt zu überzeugen? Da kann man auch einen Abstand zwischen zwei Requests erbitten oder einen robot bitten, draußen zu bleiben. Ist er ignorant und kommt der „Bitte“ nicht nach, dann wird er eben gesperrt.