召回我深知它的明文並不安全存儲登錄不過,我一直無法找到答案我的具體問題。我正在試圖做的是在召回數據庫的自動PHP腳本存儲服務器密碼,但我很偏執的數據庫被黑客攻擊,所以我需要確保他們不是在它遭受過黑客攻擊事件檢索。與我計劃的「最壞情況」情況一樣。密碼本身是隨機生成的。PHP MYSQL存儲密碼由PHP
回答
如果你絕對,肯定有返回密碼使用它們來自動登錄到其他系統 - 最安全的方式來做到這一點(不,這不會像安全的,因爲僅僅是存儲鹽醃哈希)會到:
方法1
1:具有在服務器上的文件,其中包含用於產生加密密鑰的複製方法的文檔根之外 - 散列的口令創建時間或東西。
2:使用您從腳本生成的密鑰將密碼存儲在BLOB
字段中,該字段使用AES_ENCRYPT
加密。
3:確保你總是有一個SSL連接到任何系統,你登錄到使用這些密碼,而當PHP與數據庫通信,其無論是在同一臺機器/架或加密就是這麼做的線。
方法2(更好,但有附帶條件)
如果你可以存儲到您需要登錄到,您可以用其對應的公鑰來加密該服務器上的GPG私鑰密碼,然後將它們輸入到數據庫中。
然後將GPG加密的密碼傳遞給這些系統,並在需要時 - 然後他們可以解密密碼並使用它們。
這確實意味着您需要控制這些系統當然能夠實現GPG。
謝謝我沒有想到使用GPG。現在就去做:) –
簡短的回答:
你不能。
稍長的答案:
你可以使用一個可逆加密算法。基本上,,而不是散列密碼(這是不可逆的),您加密的。
然而,這提供了更多的保護,以明文存儲密碼。請記住,根據定義,任何可逆機制都可以顛倒過來,因此,如果您的數據庫被黑客入侵,那麼犯罪者可能能夠反轉您的密碼。使用PHP的password_hash()
功能
哈希和鹽密碼,然後將其插入到MySQL。注:此使用每次不同的鹽,這使得它更加安全 - 自動,你不必鹽存儲在數據庫中,因爲PHP店給你。
// hash and salt...
$password = password_hash($your_random_password, PASSWORD_DEFAULT);
現在,在MySQL中對存儲的密碼檢查您的隨機密碼(從上面的步驟),看看它是否是合法的
if(password_verify($your_random_password, $row->passwd)) {
echo 'password is legit';
} else {
echo 'not legit';
}
有關更多信息,請參閱本上用PHP散列。 http://php.net/manual/en/faq.passwords.php
- 1. 存儲MySQL密碼
- 2. 用PHP將密碼與PHP一起存儲到MySQL中時試驗加密
- 3. PHP - MySQL的轉儲不會在密碼
- 4. 在PHP中存儲哈希到密碼
- 5. PHP存儲密碼的好方法
- 6. 隱窩密碼存儲和retrival PHP
- 7. php mysql生成,存儲和匹配密碼和鹽
- 8. 將密碼存儲到Mysql
- 9. PHP:存儲由函數
- 10. PHP和MySQL密碼問題
- 11. HTML PHP MYSQL更改密碼
- 12. 激活密碼passwordkey php(MySql)
- 13. PHP和MySQL比較密碼
- 14. 更改密碼PHP MySQL的
- 15. Mysql,php - 一次性密碼
- 16. 密碼存儲?
- 17. 在MySQL中存儲散列密碼
- 18. PHP短期密碼內存
- 19. 存儲信息php/mysql
- 20. MySQL存儲功能和PHP
- 21. PHP - 使用一次性墊來存儲加密的密碼
- 22. mysql密碼使用PHP連接到MySQL
- 23. 存儲密碼
- 24. 存儲密碼
- 25. 存儲加密密碼和salt或僅存儲加密密碼?
- 26. PHP INT由MySQL
- 27. 由PHP的MySQL
- 28. PHP解密密碼
- 29. 以bash腳本存儲MySQL密碼
- 30. Webmin在哪裏存儲根MySQL密碼?
http://stackoverflow.com/questions/401656/secure-hash-and-salt-for-php-passwords/401684#401684 – Farkie
這從用戶角度處理更多的密碼,首先給出正確的明文。謝謝你的方式:) –
散列是一種方式,所以你不能檢索/重新調用密碼 - 這是什麼使他們更安全。如果你把它們放到數據庫中,這樣你就可以把它們拿出來,你就是在問問題。看看這個:http://www.php.net/manual/en/faq.passwords.php – timgavin