我想擺脫使用md5()存儲和比較密碼。所以我想開始使用password_hash()。此用戶身份驗證是否足夠安全?
現在,我是如何做到這一點的,我會將用戶名和密碼的md5存儲在他們的會話或cookie中(如果他們選擇「記住我」),然後檢查數據庫以查看是否有用戶以該用戶名和md5的密碼存在。我意識到這不是很安全,這就是爲什麼我想停止這一點。
我不能再這樣做了,因爲password_hash()總是在變化,所以我不能在他們的會話中存儲一個散列,然後在數據庫中檢查它,因爲我需要在unhashed密碼上使用password_verify。
所以我的問題是,如果我在用戶成功登錄時在用戶表中存儲散列「會話ID」和「令牌」,然後將它們與用戶ID一起按順序存儲在會話/ Cookie中用來檢查數據庫,這是否足夠安全?當我說哈希「會話ID」和「令牌」我的意思是sha256'd或隨機大數連md5'd哈希...
實例:
用戶登錄 - >散列「會話ID」和「令牌」存儲在用戶cookies/session中,並且它們在數據庫中的行用散列的「會話ID」和「令牌」更新。
用戶訪問網站 - >代碼檢查,根據他們的瀏覽器會話/ cookie變量來查看他們的「會話ID」和「令牌」是否存在於數據庫中。如果是這樣,它假定找到的行表示當前用戶。
任何有識之士將不勝感激。
您可以使用Salted Password Hashing。 –
@PraveenD - password_hash()已經產生了一個鹽漬哈希....你究竟在暗示什麼? –
鹽應該是隨機的每個散列。 –