使用加密电子邮件地址、用户名作为取消订阅链接


Using encryption email address, user name as a unsubscribe link

我正在做某种取消订阅页面。

我的想法是使用加密的get方法。例如:

取消订阅.php?邮件=xxxxxxxxxxxxxxxx&uid=xxxxxxxxxxxxxxxxxx

一旦接收者点击链接,它可以自动取消订阅。

我将使用sha1加密数据,所以问题是

1) 它安全吗?2) 我是否必须为加密的uid和邮件地址增加一个2字段?

感谢

不要加密-创建一个随机密钥,将其存储在数据库中,并在用户到达取消订阅链接时检索!更简单、更安全。

email            |   random_key
-------------------------------
pekka@gmx.de     | dsadfdsfsaf2
gnoggo@gnoggo.com| dfssf32e34fa

取消订阅链接:

unsubscribe.php?key=dfssf32e34fa  <---- gnoggo@gnoggo.com

绝对不是!

不要像那样加密用户的数据。您所做的只是不必要地向公众公开用户数据。

除了散列不是加密。。。

相反,创建一个长的随机字符串(至少40个字符),并将其存储在该用户的数据库中。然后将其添加到邮件取消订阅链接中。这样,就没有数据泄露的可能。。。

要生成随机字符串,可以使用类似于以下的函数:

function makeRandomString($bytes) {
    $seed = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
    $len = strlen($seed) - 1;
    $return = '';
    for ($i = 0; $i < $bytes; $i++) {
        $return .= $seed[mt_rand(0, $len)];
    }
    return $return;
}
$random = makeRandomString(40); // 40 character random string...