我正在做某种取消订阅页面。
我的想法是使用加密的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...