我有一个在 Heroku 上运行的 MERN 堆栈项目,今天有人开始用许多登录请求(蛮力)淹没我的服务器。每个请求都有不同的 IP 地址,因此我无法阻止该 IP。这导致网站中断。
那我怎么能阻止它呢?如何只允许使用我的网站登录?
我有一个在 Heroku 上运行的 MERN 堆栈项目,今天有人开始用许多登录请求(蛮力)淹没我的服务器。每个请求都有不同的 IP 地址,因此我无法阻止该 IP。这导致网站中断。
那我怎么能阻止它呢?如何只允许使用我的网站登录?
您将看到许多登录页面使用的典型解决方案是需要类人交互并且脚本难以复制的几种技术之一。
你肯定见过验证码系统,它要求用户解释一些对计算机来说不容易或不实用的图像来分析。
还有一个无验证码系统,要求用户用鼠标单击屏幕上的特定位置,并分析移动以查看它是否看起来像人类。这些通常显示为单击“我不是机器人”。
许多网站(如一些美国航空公司和一些金融网站)现在要求用户设置“挑战”问题(如:“你在哪里出生?”或“你最喜欢的冰淇淋口味是什么?”)以及如果登录请求到达时没有预先为该用户放置的签名 cookie(或其他熟悉的浏览器检测指标),那么在您尝试登录之前就需要挑战问题。
一种更严厉的方法(可能对最终用户产生更大的影响)是跟踪每个帐户的失败登录尝试,并且在达到一定次数后,您开始减慢响应速度(这会减慢攻击者系统的速度),然后如果响应失败的次数更多,您会立即使每个请求都失败,并要求最终用户通过发送到其注册电子邮件地址的电子邮件来确认他们的登录请求。这给最终用户带来了不便,但可以防止在没有最终用户确认的情况下对任何个人帐户进行 N 次以上的猜测。一段时间后,您可以清除任何给定帐户的先前登录尝试次数,使其重新正常工作。