如何通过发送数千个请求来限制用户发送我的web服务?
我的web服务实际上受到验证令牌的保护,验证令牌只能通过身份验证访问,但我仍然无法避免这样一个事实,即我的web服务将检查令牌是否存在于我的数据库中。
我想过要节省IP的尝试次数,但是,如果尝试的IP被列入黑名单,那么每次在我的数据库中我都要检查一下。
有没有办法避免网络服务垃圾邮件发送者?
发布于 2015-07-08 15:13:45
您无法避免查找的成本:在某一时刻,您必须执行一次,如果只是为了查看发件人是否被列入黑名单。
因此,您最好的选择可能是确保令牌查找足够快以处理负载。
但是,您仍然应该在DB中保留一个无效尝试的跟踪,并使用关联的源。这样的跟踪应该可以很容易地检查某个特定IP最近是否有比可接受的故障数目更大的故障。首先检查这一点,以便将令牌猜测限制在最低限度。
发布于 2015-07-08 15:25:30
如果在生成页面时,您添加了一个基于时间戳的散列令牌加上一个秘密,那么通过在每个请求中包含时间戳和令牌,您将很难完成攻击。可以在不求助于数据库的情况下检查令牌。任何带有时间戳的请求都应该被拒绝。
如果这是一个单页应用程序或类似的应用程序,页面可能不会经常被刷新,那么您可以在web服务中返回一个新的哈希令牌和对任何经过身份验证的请求的响应中的时间戳。
发布于 2015-07-08 14:37:42
您可以尝试使用fail2ban或类似的软件,并实现"请求限制“规则。
它将基于IP地址,但您不需要在数据库中检查每个请求。
此外,当一个IP被列入黑名单时,它将不再到达您的when服务,因为防火墙会阻止之前传入的请求。
https://security.stackexchange.com/questions/93420
复制相似问题