php – 带有链接的电子邮件验证是个坏主意

在我的注册过程中,用户注册,他们会通过电子邮件发送验证链接,如果他们点击它,那么他们的帐户才会被验证.但这种验证方法对于僵尸程序来说不是太容易了吗?

我认为电子邮件可以由机器人创建,但是如果验证只是点击链接,它也可以由机器人自动完成.我不确定,因为我没有这样做而且不关心测试它只是为了知道,但我的问题是这个验证方法是不是有缺陷?

我正在考虑将验证码作为文本发送给用户,他们必须将其手动复制/粘贴到表单中,并且表单受验证码保护.这是一个更好的主意吗?有任何缺陷吗?

大多数建议都是关于验证电子邮件和使用CAPTCHA,当然您应该这样做,但请记住,这些方法都不是完全无懈可击的.

电子邮件验证

机器人可以轻松地“点击”任何电子邮件中的链接.复制和粘贴某些内容对于机器人作者来说会稍微烦人但不多.通常,电子邮件验证就是 – 电子邮件验证.

您验证电子邮件是否可能由尝试注册的人控制,但当然,因为电子邮件通常是通过不受信任的TCP以明文形式发送并依赖于不安全的DNS,所以在我们全部使用DNSSEC并加密所有流量之前,它将是容易嗅到电子邮件和欺骗服务器和客户端.需要注意的重要一点是,使用电子邮件验证只会给您一定程度的信心,即您与之交谈的任何人或其他任何人都是该电子邮件地址的用户.

图灵测试

回答只有人应该知道答案的问题仍然会更烦人,但考虑到你可能不会有无数的问题,机器人作者可能会将未知问题重定向到真正的人类,如果有任何问题重复使用缓存的答案不止一次.回答像我之前在一些网站上看到的“什么是12 8”这样的问题作为图灵测试完全适得其反,因为这个问题对于机器人来说实际上比对人类更容易.可能最受欢迎的图灵测试是CAPTCHA,但在这里你也必须意识到它们可能被愚弄.

首先,人们正在展示绕过CAPTCHA的方法,例如参见DEFCON 18中的解码reCAPTCHA谈话.许多CAPTCHA更易于机器人解密,因为它们是由易于反转的算法生成的. reCAPTCHA失真也很简单,但他们使用的单词是真正的扫描单词,对于OCR很难,所以原则上它应该对机器人来说要困难得多,但情况并非总是如此.

并且还有可能在其他网站上显示您想要猜测的验证码,并让人们为您解答.还有一个人们实际上解决验证码的黑市,所以如果你的机器人作者不介意花十两美分买一打,那么无论人类有多难,真正的人类无论如何都会解决它.

底线

最重要的是,使用任何停止僵硬的技术将始终是一个妥协,即机器人所有者(垃圾邮件发送者或任何想要在您的系统中注册大量用户的人)愿意花多少时间,努力和金钱去做,以及你会容忍给你的用户带来多少不便,因为最终你永远无法做任何自动化测试来告诉人类和机器人分开而不会实际上惹恼人类并疏远残疾人(有任何人试图猜测reCAPTCHA的音频版本?),你的机器人实际上可能仍然是人力驱动的,所以不是机器人,而是机器人,可以这么说.

这是一场军备竞赛,诚实的用户正在为此付出代价.请记住所有这些.

相关文章

统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
前言 之前做了微信登录,所以总结一下微信授权登录并获取用户...
FastAdmin是我第一个接触的后台管理系统框架。FastAdmin是一...
之前公司需要一个内部的通讯软件,就叫我做一个。通讯软件嘛...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...