密碼如何存放才算安全


數據庫存放密碼的方式:

1 直接保存密碼的明文值,這就有問題,如果你的用戶表被別人Select了,所有的用戶名和密碼都一目了然了,這樣的系統是最危險的。

2 保存經過MD5加密的密文值,方式2的安全性比方式1的就高了很多,就算讓你Select了用戶表,你也無法直接知道用戶的密碼,只要你的密碼強度夠的話就算無限硬匹配MD5值也需要很長時間。這是不是意味着密碼安全了,當然不是。如果一個企業對賬號和密碼的安全性要求很高時,這種方式是達不到要求的。舉個例子如果某個數據庫管理員擁有管理用戶表的權限,這就很危險了。假如有一個用戶名為System密碼為"abcd@1234_test"(d2586afe2698192fabfa70119aed37ab),要應匹配"abcd@1234_test"是需要一定難度的,如果那個數據庫管理員把用戶的密碼改成"123"(202cb962ac59075b964b07152d234b70) ,這時候就可以用System和123 成功登陸系統了。就有下面第3種方式了。

3 保存經過MD5和AES加密的密文,首先我們先把密碼用MD5加密,然后用AES加密(把用戶名和MD5密文用指定格式拼接)得到的結果就是我們要保存到數據庫的密碼密文值,這樣一來相同的密碼在不同的用戶名下的密文值是唯一的(前提用戶名是唯一的,一般情況下用戶名都是唯一的)。這樣就能防止直接更改用戶表的密碼值。應用程序在做密碼校驗時應該先用用戶名Select出該用戶,把用戶密碼的密文值用AES解密得出(用戶名和MD5密文用指定格式拼接)通過判斷AES解密出來的用戶名和傳入來的用戶名是否一致來確認該用戶數據庫的密碼是否被募改過,如果一致則沒有被募改過,再把傳進來的密碼經過MD5加密后和AES解密出來的MD5密碼值比較是否一致。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM