我正在做某種取消訂閱頁面。使用加密電子郵件地址,用戶名作爲取消訂閱鏈接
我的想法是使用帶加密的get方法。例如:
unsubscribe.php郵件= XXXXXXXXXXXXXXXX &的uid = xxxxxxxxxxxxxxxxxx
一旦他點擊鏈接,能自動unsubscibe接收器。
我將使用SHA1所以這個問題是
1)是否安全的數據進行加密? 2)我是否必須爲加密的uid和郵件地址製作額外的2字段?
謝謝
我正在做某種取消訂閱頁面。使用加密電子郵件地址,用戶名作爲取消訂閱鏈接
我的想法是使用帶加密的get方法。例如:
unsubscribe.php郵件= XXXXXXXXXXXXXXXX &的uid = xxxxxxxxxxxxxxxxxx
一旦他點擊鏈接,能自動unsubscibe接收器。
我將使用SHA1所以這個問題是
1)是否安全的數據進行加密? 2)我是否必須爲加密的uid和郵件地址製作額外的2字段?
謝謝
不加密 - 創建一個隨機密鑰,這樣你們在數據庫中存儲和檢索當用戶到達退訂鏈接!更容易和更安全。
email | random_key
-------------------------------
[email protected] | dsadfdsfsaf2
[email protected]| dfssf32e34fa
退訂鏈接:
unsubscribe.php?key=dfssf32e34fa <---- [email protected]
Absolultely不!
請勿像這樣加密用戶的數據。你什麼都不做,只是不必要地向公衆公開用戶數據。
除了hashing is not encryption ...
相反,創建一個長隨機數序列(至少40個字符),並將其存儲在數據庫中的用戶。然後將其添加到郵件取消訂閱鏈接。這樣一來,沒有數據泄露的機會......
生成隨機字符串,可以使用類似這樣的功能:
function makeRandomString($bytes) {
$seed = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
$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...
php函數rand(min,max)可以使用嗎? – user782104 2012-02-24 18:00:55
對不起,我發現它只生成一個隨機數 – user782104 2012-02-24 18:02:23
,我應該處理代碼,如果有碰撞.....(生成的代碼已存在) – user782104 2012-02-24 18:03:16
我應該爲每一個郵件的代碼或只使用一個代碼爲每個郵件發送給他? – user782104 2012-02-24 17:56:22
如果我在不同的郵件策略中使用同一個接收器的不同代碼,它會變得越來越複雜... – user782104 2012-02-24 17:57:09
@user總是生成一個新的代碼。使用後將其刪除。我 – 2012-02-24 17:57:17