我目前正在开展一个大型项目,客户要求所有内容都必须以标准方式完善,特别是在安全方面。有用户注册会话,我也必须添加电子邮件验证功能。
我在所有项目中都使用以下方法进行电子邮件验证。
在注册时,将数据保存到users表,其中status
(状态列的值)为0,并生成随机code
到该列的列。
然后使用随机code
ans用户id
作为获取变量发送指向已注册邮件ID的链接。
例如:http://site_address.com/verification_url.php?id=1&code=abc123xyz
在验证页面上,将get变量($_GET['code']
)的值与传递给id($_GET['id']
)的用户的数据库中保存的随机代码进行比较
如果两个代码相同,status
将为set to 1
并显示成功验证的消息。
请告诉我是否有普遍接受的电子邮件验证方法(保证安全性)。另外,我想知道我的方法的安全限制或问题,以便我可以解决这些问题。
答案 0 :(得分:2)
我不会发送用户ID,否则你的方法可以正常工作。发送用户ID,告诉外面的世界你的数据库/代码设计的大部分内容。 创建强大的哈希作为代码和expiredate,你会没事的。
答案 1 :(得分:1)
请在下面查看,它可能对您有所帮助
创建激活链接,如
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
}
}
?>