请求时,已经需要带有 userID 的 POST 表单,因此如果我可以记录 POST 表单的 userID,我认为有一种方法可以限制该 UserID 在一小时内的访问次数为 n 次(我认为每小时 3 次对我来说比较合适)。(这意味着 userID“A”在一小时内只能访问 3 次,而 userID“B”在一小时内也可以访问 3 次,......)
但是,我找不到该怎么做。
它所做的只是代理请求来为其他服务提供服务 - 现在仅在 apache2 上使用 ProxyPass,因此需要在 apache2 配置中进行配置(我认为)。
有办法吗?
答案1
不是在 Web 服务器级别,而是在应用程序级别执行此操作;即,在 POST 之后,应用程序应该告诉用户“您在太短的时间内发出了太多请求,请稍后再试”之类的信息。
据我所知,Apache Web 服务器(但 IIS 也是如此)只能使用 HTTP 参数(例如网站或 URL)或网络参数(例如源 IP 地址或带宽使用情况)来限制请求。
(如果我错了,请纠正我,我不是 Apache 专家。)
答案2
看一眼这个 mod_security 用例可以使用 cookies 或 uri 内容,因此您也可以提取 POST 数据。或者直接获取他们的 IP 并使用它,因为任何人都可以在表单中输入不同的用户名来绕过它。