我正在做某种取消订阅页面。
我的想法是使用get方法加密。例如:
?unsubscribe.php邮件= XXXXXXXXXXXXXXXX&安培; UID = xxxxxxxxxxxxxxxxxx
点击链接后,它可以自动取消接收接收器。
我将使用sha1加密数据,所以问题是
1)它安全吗? 2)我是否必须为加密的uid和邮件地址增加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...