我有一张PK是INT
类型的表(大约40亿个可能的无符号值,但是,我最多会有200万个)。该表还有一个CHAR(32)
列,其中包含一个随机值(使用bin2hex(mcrypt_create_iv(16, MCRYPT_DEV_URANDOM))
创建),以及指示用户ID的FK列。
我将发送一些电子邮件,其中包含链接,链接将包含上表的PK和/或随机值,以及可能的userID。链接还将包含答案(是,否等)。例如,链接可能如下所示:
<a href="ckr.php?rsp=eae8a14011e82cbf385f69b431a17e49&ans=yes">Yes</a>
我有一个PHP页面,它接受GET
请求(当然是从上面提到的电子邮件发起的),如果经过身份验证,则使用提供的答案更新数据库中的相应记录。
仅仅确认数据库中存在的16字节随机值足以验证它来自收到电子邮件的用户吗?如果没有,为什么不,你会推荐什么?
答案 0 :(得分:0)
我也会使用用户ID,因为它更快。
您的网址将变为:ckr.php?userid=1&rsp=eae8a14011e82cbf385f69b431a17e49&ans=yes
然后,当您签入数据库时,只检查userid
。如果用户存在,则检查rsp
代码。如果还可以,那就做好自己的工作吧。
答案 1 :(得分:0)
请注意,通过电子邮件发送的所有内容都是未加密的,因此不适合对用户进行身份验证。
你可以采取一些措施使其更加安全: