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

时间:2012-02-24 17:49:28

标签: php email

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

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

unsubscribe.php邮件= XXXXXXXXXXXXXXXX&安培; UID = xxxxxxxxxxxxxxxxxx

点击链接后,它可以自动取消接收接收器。

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

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

谢谢

2 个答案:

答案 0 :(得分:5)

不要加密 - 创建一个随机密钥,它存储在您的数据库中,并在用户到达取消订阅链接时检索!更容易和更安全。

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

取消订阅链接:

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

答案 1 :(得分:4)

绝对不是!

不要像那样加密用户的数据。除了不必要地向公众公开用户数据外,你什么都不做。

除了hashing is not encryption ...

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

要生成随机字符串,您可以使用与此类似的函数:

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...