2011-07-21 63 views
0

我正在嘗試爲我的網站上的每個用戶生成唯一的令牌。令牌在用戶註冊時生成,理想情況下與可能的一樣安全。這樣做的最佳方法是讓我向用戶顯示令牌?創建隨機生成的安全令牌並存儲在數據庫中

此令牌不是密碼,用戶不會自己創建它。如果我在註冊時對它進行哈希和鹽化,我將無法明顯地找回它,因爲它被哈希和鹽漬。我想要一個簡單的方法來通過PHP來實現,並且能夠輕鬆地將其顯示給用戶。

+1

聽起來像你想要一個auto_increment字段=) – Shad

回答

0

哈希是單向的,從而扭轉哈希的唯一方法是存儲原始值進行哈希冗餘。

如果您只需要顯示一次該值,然後將該值存儲到變量中,將其打印在頁面上,並且不保存它,這對您很安全。

另一種方法是隻使用數據庫加密來存儲令牌,然後解密顯示給用戶。假設你使用MySQL,你可能會發現這個helpul:MySQL Encryption

1

什麼:

md5(uniqid('', true)) 
+0

我將如何從數據庫中檢索這個並打印非哈希值? – seeARMS

+0

@seeARMS:你不需要非哈希值。散列本身就是一個標記。 – zerkms

+0

我寧願不將該令牌公開存儲在數據庫中......這就是哈希和醃製它的關鍵。如果有人訪問我的數據庫,我想令牌安全地存儲。 – seeARMS

0

不要降低zerkms的評論。但我會推薦crypt()。

非哈希值爲用戶做了什麼?

0

用戶將如何使用此令牌?

真正的問題是你的安全是什麼意思。我假設你的意思是「不可猜測」,這意味着它必須很長和/或複雜。

但是,如果用戶需要記住它,那麼這是一個問題。

所以真正的問題是你想要猜測它有多難,你想要它被召回有多容易?