我已经读到验证码不是保护网站的完美解决方案,例如用户可以创建一个帐户,因为不同国家/地区有很多人实际上以阅读验证码为生,所以我正在考虑使用电子邮件确认代替我的网站。
但这是一个更好的解决方案,还是该方法也存在一些漏洞?还有其他我没有遇到的解决方案吗?
我已经读到验证码不是保护网站的完美解决方案,例如用户可以创建一个帐户,因为不同国家/地区有很多人实际上以阅读验证码为生,所以我正在考虑使用电子邮件确认代替我的网站。
但这是一个更好的解决方案,还是该方法也存在一些漏洞?还有其他我没有遇到的解决方案吗?
这两种方法在阻止自动请求方面都不是万无一失的,但过去两种方法都对我有效。让我解释:
自动回复电子邮件相当容易,因此不能保证客户端不是机器人。同样,验证码很容易被破解(甚至不使用人类)。例如,黑客组织 DC949 最近发布了stiltwalker,它可以可靠地绕过 recaptcha 和许多其他流行的验证码服务。就像安全中的规则一样,如果某人足够坚定,他们就可以闯入。
但是,在过去与垃圾邮件帐户/评论作斗争时,电子邮件验证和验证码对我产生了很大的影响。虽然可以绕过它,但许多垃圾邮件发送者不知道如何和/或不打扰。因此,虽然它不是“安全的”,但它仍然有效。
PS 我听说的另一种技术是使用 javascript 来衡量用户在提交之前在网页上花费的时间。大多数机器人几乎会立即提交内容(如果它们甚至完全运行 javascript),因此检查自呈现页面后是否经过一两秒也可以阻止大量垃圾邮件。
他们都解决了不同的问题。
因此,您应该同时使用两者。然而,一个坚定的垃圾邮件发送者只会将基于图像的 CAPTCHA 解决方案外包给第三世界国家,或者让毫无戒心的用户通过网络钓鱼攻击来解决它们。
最好的验证码类型是用户从未见过的。因此,蜜罐验证码是最有效和用户友好的选项之一。
电子邮件确认和验证码解决了不同的问题。当您希望用户在注册过程中使用他们的真实电子邮件地址时,应该实施第一个。电子邮件确认还可以保护我们免遭身份盗用。我无法通过键入 whitehouse.gov 的电子邮件地址进行注册并假装我是总统(因为我无法点击发送到 whitehouse.gov 的确认链接,因为我不是该地址的所有者)。因此,电子邮件确认允许将每个用户链接到每个电子邮件地址。
然而,电子邮件确认并不能保护我们免受机器人的侵害(就像 CAPTCHA 一样)。老实说,我见过的几乎每个垃圾邮件机器人都实施了电子邮件确认。这真的很简单,只需几行代码就可以强制我们的程序检查电子邮件并单击每个激活链接)。有趣的细节是,其中一些垃圾邮件机器人使用123456作为其网络邮件帐户的密码。
那么,让我们谈谈验证码。它的创建是为了区分人类和机器人。从图像中读取文本,解决数学公式等。主要问题是在线机器人仍在发展。他们的模块正在升级,解决公式没有问题,他们的 OCR 模块更好(因此他们能够从图像中提取文本)。所有这些都意味着 CAPTCHA 不是对非人类的 100% 保护,但它是第一道防线,非常推荐。
最好的验证码是您实施的验证码。相信我,很多人都会尝试破解流行的验证码。为什么?答案很简单。许多网站都使用流行的验证码。如果我们能够破解该验证码,那么我们就可以在该网站上放置大量垃圾邮件内容。因此,如果您的网站不是很受欢迎并且有自己的 CAPTCHA 实施,我敢肯定,没有人会浪费时间和金钱来破坏您的 CAPTCHA。但是,如果您不确定如何以正确的方式实现它,您可以尝试非显而易见的验证码。像基于图像的 CAPTCHA(这里是示例)或 3D CAPTCHA(另一个示例)。
正如其他人建议的那样,我会尝试使用 CAPTCHA 和电子邮件验证,看看它是否适合您的网站。如果是,很好,问题解决了!
如果这还不够,您可以考虑其他一些选择:
手机验证。您要求用户输入他们的手机号码,向他们发送带有代码的 SMS(文本消息),并要求他们将代码输入网站。或者,您向他们的固定电话拨打自动电话。想想谷歌语音是如何做到的。
但是,出于各种原因,许多用户可能不愿意给你他们的电话号码,尤其是如果你不是一个非常知名的品牌(如谷歌或苹果)。
外包问题。例如,您可以要求用户使用 Facebook 登录。
然而,一些用户可能不愿意使用 Facebook 帐户登录,例如出于隐私原因。此外,Facebook 的防御也不完美。
小心这些选项。不要作恶。这些选项很容易惹恼用户或将用户赶走,因此除非您有数据表明需要它们(甚至可能不需要),否则非常不愿意使用它们。要求用户的电话号码或 Facebook 帐户非常接近“暗模式”。