Hi Dirk,
ich will vielmehr verhindern, daß er überhaupt erst gestartet wird
nein, das willst Du nicht wirklich.
Du willst nicht, daß der Prozeß überhaupt nicht gestartet wird. Vielmehr
willst Du, daß der Prozeß manchmal gestartet wird und manchmal nicht.
Das genau ist aber das Problem.
Wovon soll es abhängen, ob der Prozeß gestartet wird oder nicht?
- Einerseits hast Du dafür noch kein wirklich gutes Kriterium genannt
(wäre ich Dein 'Angreifer', dann wäre der UserAgent natürlich _nicht_
leer), und - andererseits sind gute Kristallkugeln rar und teuer.
Deshalb muß auf Deinem Server ein Prozeß (jaja ...) gestartet werden,
der diesen Request annimmt und untersucht, was für einer es ist.
Das kann Dein CGI-Skript selbst sein; es könnte auch eine Apache-Logik
sein, die mit setenvif den HTTP-Header parst und ggf. einen Redirekt
nach wasauchimmer durchführt und nicht Dein CGI-Skript startet, sondern
etwas anderes tut. Falls Dein Skript eine kostenintensive Initialisierungs-
phase absolvieren müßte, wäre das vielleicht sinnvoll.
Aber auch der Apache ist ein Prozeß, da beißt die Maus keinen Faden ab.
Du kannst nicht generell verhindern, daß ein Angreifer mit wechselnden
IP-Adressen Last auf Deinen Server bringt.
Was Du seht wohl könntest, das ist, die Zugriffe generell zu limitieren,
um die CPU-Leistung so zu verteilen, daß alle Teilnehmer gleichermaßen
darunter leiden (um beispielsweise einer im Hintergrund mitlaufenden
Anwendung genügend Power zu überlassen). Das ist aber das Gegenteil
dessen, was Du in diesem Falle erreichen willst.
Du kannst lediglich versuchen, diese Last so gering wie möglich zu halten,
indem Du mit minimalem Aufwand zwischen 'guten' und 'bösen' Requests unter-
scheidest und den Prozeß deshalb so schnell wie möglich wieder beenden
kannst, falls nötig.
Gute Hinweise, wie das funktionieren könnte, hat Phillip Dir genannt.
Viele Grüße
Michael