每次用戶登錄數據庫時,更改密碼值是否是一種好方法? 我已經寫了一個散列函數來散列密碼,當用戶在系統上註冊一個新帳戶。 每次用戶登錄時,數據庫中的散列值都將被更改。是好還是壞?每次登錄時更改數據庫中的密碼值
回答
如果你設計了這個散列函數全部由你自己來完成......這是一個非常糟糕的主意。你爲什麼需要這樣的東西?如果你存儲鹽醃SHA-256哈希密碼,安全性就足夠好了。您不需要重新生成密碼,它不提供任何額外的安全性。如果讓我們說你的應用程序傾向於SQL注入,那麼這個方案將不會保護你的應用程序。你會好很多,如果您使用鹹魚和鍵控SHA-256,是這樣的:(我不是一個PHP的編碼器,我只是希望我們的應用程序是安全的)
$username = 'Admin';
$password = 'gf45_gdf#4hg';
$key = 'MySuperSecretKEY!!!!';
$salt = hash('sha256', uniqid(mt_rand(), true) . 'something random' . strtolower($username));
$hash = $salt . $password . $key;
$hash = hash('sha256', $hash);
$hash = $salt . $hash;
,然後檢查:
$username = 'Admin';
$password = 'gf45_gdf#4hg';
$sql = '
SELECT
`hash`
FROM `users`
WHERE
`username` = "' . mysql_real_escape_string($username) . '"
LIMIT 1
;';
$r = mysql_fetch_assoc(mysql_query($sql));
$salt = substr($r['hash'], 0, 64);
$hash = $salt . $password . $key;
$hash = hash('sha256', $hash);
$hash = $salt . $hash;
if ($hash == $r['hash']) {
//OK
}
因此,即使攻擊者能夠欺騙他不知道的醃製算法,一把鑰匙也不會在SQL注入攻擊中重現有效的哈希值。
對不起,我的意思是我得到了樣本散列,然後我修改了一下。這是源http://alias.io/2010/01/store-passwords-safely-with-php-and-mysql/我很新的PHP,真的很想從中學到很多東西。任何形式的幫助將不勝感激。感謝:D – harmandogilang
對每個用戶使用不同的salt是一個好主意,它會增加破解密碼數據庫所需的時間,因爲生成的hash只能用於檢查一個帳戶。 – Wizzard
@Wizzard是的,我知道,但每次用戶登錄時更改散列值都不錯?當用戶登錄時,我會調用散列函數來再次散列密碼,並且每次登錄數據庫時值都會更改,但原始密碼相同 – harmandogilang
- 1. 更改密碼在下次登錄... vbscript
- 2. 首次新用戶登錄需要在HANA數據庫中更改密碼
- 3. 護照本地臨時密碼(首次登錄時更改)
- 4. 每次在登錄時解密時生成一個新密碼
- 5. PowerShell的 - 用戶下次登錄時須更改密碼
- 6. Java SSH在登錄時更改密碼
- 7. Ruby on Rails:設計 - 第一次登錄時更改密碼
- 8. VBScript在下次登錄時讓本地用戶更改密碼?
- 9. 使用VBScript在下次登錄時更改用戶密碼
- 10. 第一次登錄時強制更改密碼
- 11. TOAD:強制DB用戶在下次登錄時更改密碼
- 12. 更改登錄用戶的密碼(codeigniter)
- 13. 如何解密通過登錄控制asp.net登錄時存儲在數據庫中的加密密碼c#
- 14. 根據密鑰每天更改密碼
- 15. Java示例修改AD用戶「在下次登錄時更改密碼」
- 16. 更改sha1密碼mysql和cakephp登錄
- 17. SQL服務器更改登錄密碼
- 18. Yii2 - 登錄後更改密碼用戶
- 19. 更改ASP.NET登錄數據庫
- 20. 數據庫的登錄碼
- 21. Django無需再次登錄即可更改密碼
- 22. 進口客戶 - 鏈接一次登錄和密碼更改
- 23. 如何在首次登錄後讓用戶更改密碼?
- 24. 設計..第一次登錄後應該要求更改密碼
- 25. Deadbolt玩java更改密碼第一次登錄
- 26. 登錄時加密密碼
- 27. TDS7登錄數據包,加密密碼
- 28. 每次用戶登錄時更改TokenAuthentication的令牌
- 29. sqlcipher - 更改數據庫密碼失敗
- 30. 如何在數據庫記錄中「更新」更改密碼唯一代碼?
這取決於你是如何做到的。我們可以看到一些代碼嗎? –
你想解決什麼問題? –
除非你能想出一個特定的場景,否則這聽起來會增加複雜性而沒有任何安全性的好處。 – Kitsune