2017-04-01 113 views
1

我正在開發一個登錄腳本,並且試圖讓它比我以前做的更安全。在我過去只存儲uniqid()的散列之前,並將其存儲爲用戶登錄時的會話。現在我使用下面的函數來創建一個UID,但認爲它可能有點矯枉過正。它返回一個64個字符的字符串。生成用戶唯一標識的最佳/標準方法?

private function _createUid() { 
    $bytes = random_bytes(32); 
    $uid = bin2hex($bytes); 

    return $uid; 
} 

現在我的問題是,什麼是存儲登錄唯一ID的標準方法/令牌?我並不是指記住我,因爲這是一個完全不同的故事,但僅僅是一個典型的登錄名和我應該存儲的UID。

任何幫助將是偉大的,謝謝!

+0

我認爲JWT令牌是存儲會話的絕佳方式,因爲它不需要數據庫訪問權限進行驗證,只要您喜歡就可以過期。你沒有真正說明你想要達到的目標。這些ID是發送到服務器來驗證客戶端還是? –

+0

它不一定是應該引起擔憂的字符串長度。將獨特性與驗證相結合是一個好方法。您應該根據存儲在服務器端的內容檢查會話值。例如。每個請求上的數據庫條目。正如盧克指出的JWT是非常好的驗證方法。即使使用JWT,您也可以驗證每個請求上附加到json令牌的值。 – Yolo

+0

你不需要這個,因爲你已經擁有它 - 會話ID。 – Narf

回答

0

簡單地使用我正在使用的。看起來用戶ID可以用許多不同的方式生成,沒有一種方法是正確的。