簡體   English   中英

安全的密碼存儲

[英]Secure password storage

我正在開發用戶必須登錄的Web服務。 我將用戶數據存儲在SQL數據庫中,並通過PHP進行輸入/輸出。 但是我不想公開存儲它。 如何使用PHP加密密碼,以便只有知道密碼的人才能解鎖密碼?

我知道phpBB之類的服務在存儲的密碼上使用某種隱藏/加密方法。

您需要使用適當的安全算法對密碼進行加鹽和哈希處理。

確保密碼存儲方案安全的最簡單方法是使用標准庫

由於安全性往往要比大多數程序員獨自解決的情況復雜得多,並且具有更多看不見的破壞可能性,因此使用標准庫幾乎總是最簡單,最安全的(如果不是唯一的)可用選項。

查看此答案以獲取更多信息

您可能希望對密碼進行哈希處理-不對其進行加密。 簽出SHA-1 散列意味着您無法像加密一樣檢索原始數據。 相反,您要做的是對用戶輸入的哈希進行哈希處理,並將其與數據庫中的哈希進行比較,以查看他們是否具有正確的密碼。 這樣做可以提高安全性,就好像您的數據庫曾經遭到破壞一樣-一堆哈希是無用的。

保存MD5哈希,並使其更安全,添加鹽。

好吧,您不應該使用MD5對其進行加密(這並不是很安全,大多數黑客都有轉換表)。

因此,您可以使用SHA1(通常使用)對其進行哈希處理。

如果您需要更高的安全性,則可以添加更多salt ,這是可以添加的密鑰 (僅作為示例,通常使用):

salt+sha1(salt+pass)

這種組合可以用於多種語言。

在SHA-1(sha1 php內置函數)中散列密碼,並重復幾次鹽析(與以上答案中的相同代碼,僅循環幾次)。 這應該是足夠的保護,所以即使入侵者以某種方式掌握了哈希,他們也不應該能夠破解它們……

可以對密碼進行哈希處理(最好加一個鹽):

$salt = random_string($length = 5);
$hash = $salt . sha1($salt . $password);

或存儲加密的文件(僅當您的MySQL連接受SSL保護時):

INSERT INTO `user` (`user`,`pass`) VALUES("username",ENCRYPT("password","secretkey"))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM