我想知道 reCAPTCHA 是否足够强大以防止 BruteForce 被机器人攻击,或者我是否需要增加更多安全性,例如每 5 次尝试向用户发送一封唯一的邮件,有人尝试登录该帐户并在邮件被阻止时阻止该帐户没有检查。
目的是防止在网站上自动猜测密码。
我想知道 reCAPTCHA 是否足够强大以防止 BruteForce 被机器人攻击,或者我是否需要增加更多安全性,例如每 5 次尝试向用户发送一封唯一的邮件,有人尝试登录该帐户并在邮件被阻止时阻止该帐户没有检查。
目的是防止在网站上自动猜测密码。
从客户端的角度来看,ReCaptcha 很棒,但它并不完美。
您提到的邮件技术称为帐户锁定,是对暴力攻击的非常有效的威慑。我会实现它,因为它是一个完全独立于客户端的附加层。
您可以实施的另一项措施是节流。人类在 1 秒内发送 2 个请求(或您认为合适的任何值)是不现实的,因此您限制了接受连接的频率。在 iptables 中,你会做这样的事情:
iptables -I INPUT -p tcp --dport 22 -i eth0 -m state --state NEW -m recent --set
iptables -I INPUT -p tcp --dport 22 -i eth0 -m state --state NEW -m recent --update --seconds 60 --hitcount 4 -j DROP
(示例取自debian-administration.org。)这会将对端口 22 的请求限制为 3 个/分钟,任何其他请求都将被丢弃。这对于除登录例程之外的其他操作很有用。
验证码通常旨在确保“用户”输入来自真人。
虽然它可以帮助防止针对网站登录机制的自动攻击,但它可能会对用户体验(用户名、密码和验证码)产生负面影响,除非系统可以配置为仅在一次或两次登录失败后才启用验证码。
在不影响用户体验的情况下控制攻击的替代机制是网站上的访问控制策略,其中包括在给定时间段内对不成功登录尝试次数的限制,然后是锁定持续时间。这将有助于击败自动和有针对性的(即基于用户的密码猜测攻击以及自动攻击),因此实际上您得到 2 比 1。
是否施加定时锁定(即在 10 分钟后自动重置)或是否锁定帐户并等待有效用户以某种方式响应是基于特定场景的判断调用,例如数据敏感性、大小用户数量、可用的服务台工作人员数量等。
通知用户多次登录失败可能有助于让用户意识到潜在的未经授权的访问尝试,但也可能导致大量不受欢迎的支持电话,因此请将栏设置在适合您的级别。
reCAPTCHA 确实使密码猜测变得更加困难,但并非不可能。黑客建立带有受验证码保护的好东西(游戏、下载等)的网站,并将您的验证码重定向到那里。试图下载的用户将解决您的验证码,使黑客能够使用它来猜测另一个密码。帐户锁定更有效,因为只有电子邮件所有者才能解锁帐户。这对用户来说也更具破坏性。
请记住,验证码和帐户锁定都是糟糕的用户体验,您的网站应该非常好/独特,才能负担得起此类技术。在您第一次要求解决验证码之前,请给您的用户至少几次尝试,否则用户可能会简单地转移到下一个提供与您相同服务的站点。
另一种附加安全性的方法是两因素身份验证。这是用户注册他们的手机(移动)电话号码的地方,每当他们登录时,服务器都会通过 SMS 消息发送一个代码,用户必须在获得访问权限之前输入该代码。与所有事物的安全性一样,这给用户增加了一层烦恼,但非常有效。
一种更简单的安全方法是限制简短/简单的密码。如果您的用户被允许使用“1234”他们的密码,那么机器人比“ihatelongpasswordssouch”更有可能猜到这一点