如何对 Perl Web 服务实施服务器端速率限制?

2024-01-02

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

我四处寻找一些代码并发现算法::TokenBucket http://search.cpan.org/dist/Algorithm-TokenBucket在 CPAN 中,但那是针对客户端请求的;它没有持久性,也没有每用户配置,因此对于服务器端速率限制来说并不是真正有用。

我正在寻找对已经存在的东西的建议,否则我需要基于一些简单的持久性(例如绑定到)来推出自己的建议DB_File http://search.cpan.org/dist/DB_File每个 IP 地址和一些执行令牌管理的批处理作业。


我用过缓存::FastMmap http://search.cpan.org/perldoc?Cache::FastMmap通过跟踪每个 IP 地址的点击率来进行速率限制。它是一个缓存,因此数据会随着时间的推移而过期,但如果您正确设置大小和过期时间,这应该不是问题。

IP 地址是哈希键,哈希值是时间戳数组。我有第二个数据结构(也由缓存::FastMMap http://search.cpan.org/perldoc?Cache::FastMmap),这是被禁止的 IP 地址的哈希值,根据第一个结构中的数据进行更新。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何对 Perl Web 服务实施服务器端速率限制? 的相关文章

随机推荐