【问题标题】:Which is the standard method of Email Verification [closed]这是电子邮件验证的标准方法[关闭]
【发布时间】:2014-06-02 08:53:05
【问题描述】:

我目前正在从事一个大型项目,客户要求一切都必须完美且符合标准,尤其是在安全方面。有一个用户注册会话,我也必须添加电子邮件验证功能。

我在所有项目中都使用以下方法进行电子邮件验证。

  1. 注册时,将数据保存到用户表,status(状态列的值)为 0,生成的随机 code 到用于此目的的列。

  2. 然后用随机的code 和用户的id 作为获取变量发送一个指向注册邮件ID 的链接。 例如:http://site_address.com/verification_url.php?id=1&code=abc123xyz

  3. 在验证页面上,get 变量 ($_GET['code']) 的值与该用户在数据库中保存的随机码进行比较,该用户具有传递的 id ($_GET['id'])

  4. 如果两个代码相同,status 将是 set to 1 并显示成功验证消息。

请告诉我是否有普遍接受的电子邮件验证方法(有保证的安全性)。另外我想知道我的方法的安全限制或问题,以便我可以解决这些问题。

【问题讨论】:

  • 验证电子邮件很好,但包括filter_var($email, FILTER_VALIDATE_EMAIL) 电话,以避免将验证消息发送到无效的电子邮件地址,并使用各种验证码。顺便说一句:阅读本网站的帮助:这个问题不太合适
  • 除非您的代码可以猜到,否则您不需要传递用户 ID。只需匹配代码并检查它是否存在且未过期。如果是,请将其标记为已验证。
  • @ELias Va:对不起,我不知道还有什么地方可以就这件事寻求帮助。验证码和电子邮件验证也已经存在。
  • 当用户成功验证他们的 EMAIL 时,不要忘记清除 verification code 字段。
  • 普遍接受的电子邮件验证方法:[a] 如果这是一个公共站点,请不要验证自己 - 而是使用 oauth(如 SO)并让他们共享现有的、经过验证的电子邮件地址 [ b] 发送一封您正在做的电子邮件,然后确保链接有时间限制 [c] 您真的需要您网站上的“帐户”吗?如果它是电子商务服务,人们将允许访客访问。

标签: php mysql email-validation


【解决方案1】:

我不会发送用户 ID,否则您的方法可以正常工作。将您告诉外界的用户 ID 发送给您的大部分数据库/代码设计。 创建强哈希作为代码和过期日期,你会没事的。

【讨论】:

  • 谢谢你,伙计。也会听从你的指示。 :)
【解决方案2】:

请往下看,可能对你有帮助

  • 像这样创建激活链接

    http://www.hostname.com/verification_url.php?id=base64_encode($id)&code=base64_encode($code)
    
  • 验证脚本

    <?php
    
    if(isset($_GET['id'])&&isset($_GET['code'])){
      $id = base64_decode($id);
      # your database connection code here
      # get email id using $id for mailing purpose
      if($id!=NULL){
        # update the user status as active and send success mail
      }
      else{
        # sent failure mail
      }
    }
    
    ?>
    

【讨论】:

    猜你喜欢
    • 2013-12-05
    • 2014-10-17
    • 2016-05-21
    • 2014-07-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-15
    • 1970-01-01
    相关资源
    最近更新 更多