Php 用链接验证电子邮件是个坏主意吗

Php 用链接验证电子邮件是个坏主意吗,php,security,registration,email-verification,Php,Security,Registration,Email Verification,在我的注册过程中,用户注册后,会通过电子邮件向他们发送一个验证链接,如果他们单击该链接,他们的帐户才会被验证。但是这种验证方法对机器人来说不是太容易了吗 我认为电子邮件可以由机器人创建,但可以肯定的是,如果验证只是单击一个链接,它也可以由机器人自动完成。我不确定,因为我没有这样做,也不想测试它只是为了知道,但我的问题是,这种验证方法是否有缺陷 我正在考虑将验证码作为文本发送给用户,用户必须手动将其复制/粘贴到表单中,并且表单受captcha保护。这是个更好的主意吗?有什么缺陷吗?问题是你想验证什

在我的注册过程中,用户注册后,会通过电子邮件向他们发送一个验证链接,如果他们单击该链接,他们的帐户才会被验证。但是这种验证方法对机器人来说不是太容易了吗

我认为电子邮件可以由机器人创建,但可以肯定的是,如果验证只是单击一个链接,它也可以由机器人自动完成。我不确定,因为我没有这样做,也不想测试它只是为了知道,但我的问题是,这种验证方法是否有缺陷


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

问题是你想验证什么?当您发送电子邮件地址的链接时,您可以知道,无论是谁注册了该帐户,都可以访问该电子邮件地址。除此之外,它不会告诉你任何关于他们的事情


所以,是的,机器人可以创建一个帐户,并使用它进行注册。如果你想阻止机器人,那么是的,你需要添加验证码。请注意,将代码添加到复制/粘贴中没有什么意义-这对机器人来说很容易做到,也不会通过验证码为您带来任何好处。

一如既往,安全性和便利性通常是相互竞争的

电子邮件中的链接只是验证它是否为活动电子邮件地址。是的,机器人很容易处理这个问题。但是,你的服务价值如此之高,以至于机器人会攻击它吗

验证码始终是确保用户人性化的方法。与之相关的额外编码和挫折是一种权衡


最后,让事情尽可能简单,但不要简单。

如前所述,您只需进行一些验证码验证

我的建议是,在应用程序创建用户帐户并发送验证电子邮件之前,先进行人工验证。你们的网站的附加值不能轻易地被强迫只发送垃圾邮件验证电子邮件和创建虚假的等待验证帐户


如果你这样做,链接没有问题。

是的,机器人可以输入电子邮件并检查回复。我也听说过机器人在图像识别和回答验证码方面做得更好的努力,尽管我不能肯定它们有多好。如果你真的很担心,我会同意:

  • 电子邮件验证
  • 验证码
  • 简单的随机问题(大多数人有多少只耳朵/手指?)
  • 通过SMS发送代码的手机号码

  • 最后一个可能被证明是消除机器人的最佳方法,但它也会限制注册您网站的用户。此外,验证次数越多,用户越恼火,让他们注册的障碍就越大,这也可能是一个很大的缺点。就个人而言,我认为CAPTCHA是机器人保护与用户不便之间的一个很好的平衡。

    您是只验证电子邮件还是进行完整注册

    我总是先验证电子邮件帐户。然后在验证后完成注册过程

    因此,在验证电子邮件步骤中添加验证码

    换句话说,要求用户输入他们的电子邮件地址,输入验证码并提交表单

    这样,只有真实的人才能收到验证电子邮件

    当然,这并不能阻止人类机器人

    直流电

    这也意味着您不需要存储失败/错误的注册数据

    一个问题是用户使用一个电子邮件地址进行验证,然后在注册过程中对其进行更改,我就是这样处理的

    当用户提交其电子邮件地址时,数据根本不会存储。相反,我使用
    $validation\u code=md5(trim($email)+$secret)
    生成验证代码。这样他们就不能更改实际登记表上的电子邮件地址。电子邮件和验证代码作为隐藏字段带到末尾,以验证电子邮件地址。如果电子邮件地址与已验证的电子邮件地址不同,则注册将失败,因为md5不再匹配


    DC

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

    电子邮件验证 机器人可以轻松地“点击”任何电子邮件中的链接。对机器人作者来说,复制和粘贴一些东西会稍微让人恼火一些,但不会太多。一般来说,电子邮件验证就是电子邮件验证

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

    图灵测试 回答一个只有人类才知道答案的问题会更烦人,但考虑到你可能不会有无限多的问题,机器人作者可能会将未知问题重定向到真实的人类,如果任何问题重复多次,则使用缓存的答案。回答像“12+8是什么”这样的问题,就像我最近在一些网站上看到的那样,图灵测试完全是适得其反的,因为这个问题对机器人来说比人类更容易。可能最流行的图灵测试是CAPTCHA,但在这里你也必须意识到它们可能被愚弄

    首先,人们展示了规避验证码的方法,例如,请参阅DEFCON 18的解码reCAPTCHA对话。对于机器人来说,许多验证码更容易破译,因为它们是由算法生成的,而这些算法很容易反转。reCAPTCHA扭曲也很简单,但是