請求時,已經需要帶有 userID 的 POST 表單,因此如果我可以記錄 POST 表單的 userID,我認為有一種方法可以限制訪問 n 次(我認為每小時 3 次對我來說比較好)該用戶ID 一小時。 (也就是說使用者ID「A」一小時只能存取3次,使用者ID「B」一小時也可以存取3次,...)
但是,我找不到該怎麼做..
它的作用只是代理請求以提供其他服務 - 現在僅在 apache2 上使用 ProxyPass,因此需要在 apache2 配置中進行配置(我認為)。
有辦法做到嗎?
答案1
不是在 Web 伺服器級別,您需要在應用程式級別執行此操作;即在 POST 之後,應用程式應該告訴用戶「您在太短的時間內發出了太多請求,請稍後再試」。
AFAIK,Apache Web 伺服器(但對於 IIS 也是如此)只能使用 HTTP 參數(例如網站或 URL)或網路參數(例如來源 IP 位址或頻寬使用情況)來限制請求。
(如果我錯了,請糾正我,我不是 Apache 專家。)
答案2
看一眼這個 mod_security 用例可以使用 cookie 或 uri 內容,因此您也可以提取 POST 資料。或者只是獲取他們的 IP 並使用它,因為任何人都可以在表單中輸入不同的用戶名來繞過它。