- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我让 Apache 和 Modsecurity 一起工作。我试图通过请求的 header (如“facebookexternalhit”)来限制命中率。然后返回友好的“429 Too Many Requests”和“Retry-After: 3”。
我知道我可以读取一个标题文件,例如:
SecRule REQUEST_HEADERS:用户代理“@pmFromFileratelimit-bots.txt”
但是我在构建规则时遇到了麻烦。
任何帮助将不胜感激。谢谢。
最佳答案
经过两天的研究和理解 Modsecurity 的工作原理,我终于做到了。仅供引用,我正在使用 Apache 2.4.37 和 Modsecurity 2.9.2 这就是我所做的:
在我的自定义文件规则:/etc/modsecurity/modsecurity_custom.conf
中,我添加了以下规则:
# Limit client hits by user agent
SecRule REQUEST_HEADERS:User-Agent "@pm facebookexternalhit" \
"id:400009,phase:2,nolog,pass,setvar:global.ratelimit_facebookexternalhit=+1,expirevar:global.ratelimit_facebookexternalhit=3"
SecRule GLOBAL:RATELIMIT_FACEBOOKEXTERNALHIT "@gt 1" \
"chain,id:4000010,phase:2,pause:300,deny,status:429,setenv:RATELIMITED,log,msg:'RATELIMITED BOT'"
SecRule REQUEST_HEADERS:User-Agent "@pm facebookexternalhit"
Header always set Retry-After "3" env=RATELIMITED
ErrorDocument 429 "Too Many Requests"
说明:
注意:我希望每 3 秒限制 1 个请求。
您可以通过添加 @pmf 和 .data 文件来改进此规则,然后初始化全局集合,例如 initcol:global=%{MATCHED_VAR}
,这样您就不会仅限于单个匹配规则。我没有测试最后一步(这是我现在需要的)。如果有的话,我会更新我的答案。
更新:
我已经调整了规则,以便能够拥有一个包含我想要限制速率的所有用户代理的文件,因此单个规则可以在多个机器人/爬虫之间使用:
# Limit client hits by user agent
SecRule REQUEST_HEADERS:User-Agent "@pmf data/ratelimit-clients.data" \
"id:100008,phase:2,nolog,pass,setuid:%{tx.ua_hash},setvar:user.ratelimit_client=+1,expirevar:user.ratelimit_client=3"
SecRule USER:RATELIMIT_CLIENT "@gt 1" \
"chain,id:1000009,phase:2,deny,status:429,setenv:RATELIMITED,log,msg:'RATELIMITED BOT'"
SecRule REQUEST_HEADERS:User-Agent "@pmf data/ratelimit-clients.data"
Header always set Retry-After "3" env=RATELIMITED
ErrorDocument 429 "Too Many Requests"
因此,带有用户代理的文件(每行一个)位于此规则同一目录下的子目录中:/etc/modsecurity/data/ratelimit-clients.data
。然后我们使用 @pmf 读取并解析文件( https://github.com/SpiderLabs/ModSecurity/wiki/Reference-Manual-(v2.x)#pmfromfile )。我们使用用户代理初始化 USER 集合:setuid:%{tx.ua_hash}
(tx.ua_hash 位于 /usr/share/中的全局范围内) modsecurity-crs/modsecurity_crs_10_setup.conf
)。我们只是使用user作为集合,而不是global。仅此而已!
关于apache - Modsecurity & Apache : How to limit access rate by header?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53620557/
SELECT username, (SUM(rating)/count(*)) as TheAverage, count(*) as TheCount FROM ratings WHERE month
通常我的计数器指标查询如下所示: rate(metric_total[5m]) rate(metric_total[$__interval]) 但是在查看使用 Prometheus 和 Grafana
@Override public void onPositiveButtonClicked(int value, @NotNull String comments) { Rating rati
我尝试创建一个自定义评级栏。我不使用 style 因为我只用过一次。因此,我在 drawable 文件夹中创建了一个 layer-list(它的名称是 custom_rating_bar.xml):
我尝试通过 Django 评级应用程序评级来排序一组模型对象。我在我看来构建了一个 order_by 函数,该函数工作正常,但当我进入评级字段时,我收到此错误:“评级值必须是评级实例,而不是'100”
更新:我输错了 2 个变量...太尴尬了。感谢大家的努力! 抱歉,我发现我为 2 个不同的环境输入了错误的值,第一个我设置了 sort = 0 和 rating=1 但后来在 irb 中我设置了 so
当我使用 Keras 定义模型时,大多数时候都会收到此警告。它似乎以某种方式来自 tensorflow: WARNING:tensorflow:From C:\Users\lenik\AppData\
我有一个二元分类问题,类别背景 (bg) = 0,信号 (sig) = 1,我正在为此训练神经网络。出于监控目的,我尝试在 Keras 中使用 TensorFlow 后端实现自定义指标,该指标执行以下
所以我们有如下电影评分关系数据库: mysql> select * from ratings; +-----+-----+------+ | uid | mid | rid | +-----+-
我正在使用 AVAudioRecorder。我以 44100 采样率以 caf 格式 录制音频。就记录成功了。录制后,我想转换已录制的 caf 采样率为 11025 和 22050 的音频文件。是否可
因此,我们的 ASP.NET4 Web 应用程序中有一个利率计算器类,它使用 Microsoft.VisualBasic.Financial.Rate 来计算名义利率(基于输入参数)。 我们注意到,对
我想用生成器构建一个数独游戏。我已经想出了在没有难度级别的情况下如何做的一切:简单、中等、困难。我的问题是根据难度级别我应该隐藏多少个数字?任何想法。 最佳答案 我很确定数独谜题的难度等级不是根据缺失
如何防止客户对产品进行多次评分?最好使用存储 IP 地址的 cookie,还是最好将用户评级存储在数据库中?我正在使用 MySQL 和 ColdFusion。 干杯! 最佳答案 如果您有用户帐户,请将
项目简介 rate-limit 是一个为 java 设计的渐进式限流工具. 目的是为了深入学习和使用限流,后续将会持续迭代. 特性 渐进式实现 。 支持独立于 spri
我们使用 spring-cloud-gateway 使用 RedisRateLimiter 进行速率限制。如果我们有一个按键来按每条路线进行速率限制,一切都可以立即使用。但是,我们有一个用例,其中针对
关闭。这个问题是opinion-based .它目前不接受答案。 想改善这个问题吗?更新问题,以便可以通过 editing this post 用事实和引文回答问题. 去年关闭。 Improve th
Lyft文档(https://developer.lyft.com/docs/rate-limits)中有一条信息,即“费率限制是全局的,并基于每个客户端ID强制执行。”。真的是这样吗? Lyft会根
就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引起辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the he
引自普罗米修斯 Count and sum of observations文档: To calculate the average request duration during the last 5
引自普罗米修斯 Count and sum of observations文档: To calculate the average request duration during the last 5
我是一名优秀的程序员,十分优秀!