当前位置:  开发笔记 > 编程语言 > 正文

如何为Perl Web服务实现服务器端速率限制?

如何解决《如何为PerlWeb服务实现服务器端速率限制?》经验,为你挑选了1个好方法。

我有一个基于Perl的CGI /快速CGI Web服务,并希望通过IP地址对客户端进行速率限制,以阻止侵略性客户端造成太多工作.

我查看了一些代码并在CPAN中找到了Algorithm :: TokenBucket,但这是针对客户端请求的; 它没有持久性,没有每用户配置,因此对服务器端速率限制没有用.

我正在寻找已经存在的东西的建议,否则我需要基于一些简单的持久性来自行推送,例如绑定到DB_File每IP地址和一些执行令牌管理的批处理作业.



1> kixx..:

我通过跟踪每个IP地址的命中率,使用Cache :: FastMmap进行速率限制.它是一个缓存,因此数据会随着时间的推移而过期,但如果您设置了大小和到期时间,这应该不是问题.

IP地址是散列键,散列值是时间戳数组.我有第二个数据结构(也由Cache :: FastMMap支持),它是被禁止的IP地址的哈希,根据第一个结构的数据更新.

推荐阅读
手机用户2502852037
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有