首页 文章

需要哈希电子邮件'verification' URL吗?

提问于
浏览
0

我有一个收集基本用户信息的表单 . 在随后的页面上,它要求用户输入“验证”代码,以确保他们可以访问所提到的电子邮件帐户 .

此外,如果有人在输入验证码之前意外离开了网站,我将提供一个带有唯一$ _GET变量的链接,以便他们验证自己的电子邮件地址 .

几个问题:

  • 将验证码存储在数据库中客户电子邮件地址旁边的普通网站(比如代码是12345)是否有任何危害?

  • 是否需要'hash'验证URL $ _GET变量?我的想法是简单地创建一个64个字符的字符串,附加到URL的末尾并检查数据库值(再次存储在电子邮件地址旁边) .

我永远不会对用户密码做同样的事情(保持打开未散列状态),但在这种情况下,正确的方法是什么?

编辑

似乎人们喜欢GUID的想法(虽然我不确定它是如何比64字符随机生成的字符串更独特) . 下面的功能似乎足够吗?

function getGUID(){
    if (function_exists('com_create_guid')){
        return com_create_guid();
    }else{
        mt_srand((double)microtime()*10000);//optional for php 4.2.0 and up.
        $charid = strtoupper(md5(uniqid(rand(), true)));
        $hyphen = "-";
        $uuid = "{"
            .substr($charid, 0, 8).$hyphen
            .substr($charid, 8, 4).$hyphen
            .substr($charid,12, 4).$hyphen
            .substr($charid,16, 4).$hyphen
            .substr($charid,20,12)
            ."}";
        return $uuid;
    }
}

1 回答

  • 3

    只需使用GUID就可以忘记了!如果需要,您可以将其存储在另一个表中 . 无需哈希 .

相关问题