【发布时间】:2014-06-02 08:53:05
【问题描述】:
我目前正在从事一个大型项目,客户要求一切都必须完美且符合标准,尤其是在安全方面。有一个用户注册会话,我也必须添加电子邮件验证功能。
我在所有项目中都使用以下方法进行电子邮件验证。
注册时,将数据保存到用户表,
status(状态列的值)为 0,生成的随机code到用于此目的的列。然后用随机的
code和用户的id作为获取变量发送一个指向注册邮件ID 的链接。 例如:http://site_address.com/verification_url.php?id=1&code=abc123xyz在验证页面上,get 变量 (
$_GET['code']) 的值与该用户在数据库中保存的随机码进行比较,该用户具有传递的 id ($_GET['id'])如果两个代码相同,
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