Bei der Anforderung ist bereits ein POST-Formular mit Benutzer-ID erforderlich. Wenn ich also die Benutzer-ID des POST-Formulars protokollieren kann, gibt es meiner Meinung nach eine Möglichkeit, den Zugriff auf diese Benutzer-ID pro Stunde auf n Mal zu begrenzen (ich denke, 3 Mal pro Stunde ist für mich gut). (Das bedeutet, dass Benutzer-ID „A“ nur 3 Mal pro Stunde zugreifen kann und Benutzer-ID „B“ ebenfalls 3 Mal pro Stunde zugreifen kann, …)
Aber ich konnte nicht herausfinden, wie das geht.
Es leitet die Anforderung lediglich weiter, um andere Dienste bereitzustellen – derzeit wird auf Apache2 nur ProxyPass verwendet, daher muss es (glaube ich) in der Apache2-Konfiguration konfiguriert werden.
Gibt es eine Möglichkeit, dies zu tun?
Antwort1
Nicht auf der Ebene des Webservers. Dies müssen Sie auf der Anwendungsebene tun. Nach dem POST sollte die Anwendung dem Benutzer also etwa Folgendes mitteilen: „Sie haben zu viele Anfragen in zu kurzer Zeit gestellt. Bitte versuchen Sie es später erneut.“
Soweit ich weiß, kann der Apache-Webserver (das gilt aber auch für IIS) Anfragen nur über HTTP-Parameter (wie etwa die Website oder URL) oder Netzwerkparameter (wie etwa die Quell-IP-Adresse oder die Bandbreitennutzung) drosseln.
(Bitte korrigieren Sie mich, wenn ich falsch liege, ich bin kein Apache-Experte.)
Antwort2
Schauen Sie sich andieser mod_security Anwendungsfalldas Cookies oder URI-Inhalte verwenden kann, sodass Sie wahrscheinlich auch POST-Daten extrahieren können. Oder schnappen Sie sich einfach ihre IP und verwenden Sie diese, da jeder einen anderen Benutzernamen in ein Formular eingeben kann, um es zu umgehen.