2016-04-06 81 views
0

所以我有一個PHP代碼,它將密碼的散列版本保存到一個名爲passwords.txt的文件中。就目前而言,知道文件目錄(www.example.com/datacache/passwords.txt)的任何人都可以訪問它。這是不正確的做法嗎?我以爲我按照指南對信件進行了密碼處理,但這看起來奇怪地不安全。思考?建議?我可以以純文本形式存儲sha256哈希密碼嗎?

謝謝!

+0

你能告訴我們你的代碼嗎? – Genzotto

+0

[不要使用SHA256作爲密碼](https://paragonie.com/blog/2016/02/how-safely-store-password-in-2016)。 –

回答

1

其實這裏還有兩個問題:

1)它是確定的哈希存儲在一個文件

保存密碼在文件中不是bett呃或更糟糕的是將其存儲在數據庫中。帶文件的一點是,它應該存儲在WWW根目錄之外。大多數提供程序都提供了一個私人目錄,可以通過代碼訪問,但無法訪問HTTP請求。

2)是否可以安全使用SHA-256散列爲密碼

無SHA *和MD5不應該直接用於散列密碼,因爲他們速度太快,因此可以蠻力強行太容易了。相反,應該使用像BCrypt,PBKDF2SCrypt這樣的緩慢功能,它們提供了一個成本因素,並自動添加安全鹽。

PHP報價a password API有兩個功能password_hash()password_verify()。使用它們,它們是未來的證明,並會產生BCrypt哈希。

// Hash a new password for storing in the database. 
// The function automatically generates a cryptographically safe salt. 
$hashToStoreInDb = password_hash($password, PASSWORD_DEFAULT); 

// Check if the hash of the entered login password, matches the stored hash. 
// The salt and the cost factor will be extracted from $existingHashFromDb. 
$isPasswordCorrect = password_verify($password, $existingHashFromDb); 

如果您運行的是沒有此API的舊版本PHP,請升級。如果由於某些原因您不能,請查看password_compat

+0

使用由我的主機提供的私人目錄(1and1)與僅在目錄中放置.htaccess文件來阻止用戶有區別嗎? – Schwaitz

+0

@kuuy - 當然,你的意思是'.htaccess'文件中的'拒絕所有'命令。在實踐中,這也是一個很好的解決方案,理論上,超級目錄更安全一些。 htaccess方法依賴於正確的配置(你是否在開發團隊工作?),並假設服務器軟件不能被欺騙。 out-of-root目錄的另一個優點是,密碼文件不是版本控制的一部分,並且可以限制性地爲該目錄設置權限。 – martinstoeckli

+1

所以我已經實現了password_has()和password_verify()命令(它花費了1and1設置來切換PHP版本),而且事情都很完美。我的確也意味着拒絕所有命令! – Schwaitz

0

理想情況下,你想將它們保存在一個安全的SQL數據庫,或者說描述的東西;哈希應該是第二道防線。

所以如果你的數據庫中的數據被破壞和黑客得到它的時候,就無法登錄到每個人的帳戶。

通常情況下,任何類型的散列的過程都是一旦它被帶出來,它將是最安全的過程,然後逐漸隨着時間的推移,隨着人員的集合和增加計算機的能力,散列會通常會通過一系列彩虹表「破碎」,最終會出現一個網站,例如THIS這就是Md5發生的情況。

如果您打算將它們存儲在一個.txt文件,你可以對你已經完成頂部做的最低,爲確保您的鹽哈希密碼。 對散列密碼進行醃製可減少被破解的機會。請參閱下面的鏈接,瞭解如何進行醃製。

Great video by Computerphile on YouTube about the topic

Good tutorial by CrackStation on how to Salt a Hash

Good examples by W3Schools on Hashing/Salting

+0

不錯的提及鹽,請確保您爲每個用戶隨機生成的鹽正確使用它。 – Dane

+0

是的,忘了補充一點。 – Tommy

+0

我不會認爲W3school的任何內容都是「好的」,特別是在涉及到安全性方面。儘管作者(Taylor Hornby)現在可能指向[此頁](https://paragonie.com/blog/2016/02/how-safely-store-password-in-2016),但破解站文章很棒。 –

相關問題