Ⅰ 如何安全的存儲用戶密碼
大多數的web開發者都會遇到設計用戶賬號系統的需求。賬號系統最重要的一個方面就是如何保護用戶的密碼。一些大公司的用戶資料庫泄露事件也時有發生,所以我們必須採取一些措施來保護用戶的密碼,即使網站被攻破的情況下也不會造成較大的危害。如果你還在存儲用戶密碼的MD5,那可真的有點弱了。
保護密碼最好的的方式就是使用帶鹽的密碼hash(salted password hashing).對密碼進行hash操作是一件很簡單的事情,但是很多人都犯了錯。接下來我希望可以詳細的闡述如何恰當的對密碼進行hash,以及為什麼要這樣做。
重要提醒
如果你打算自己寫一段代碼來進行密碼hash,那麼趕緊停下吧。這樣太容易犯錯了。這個提醒適用於每一個人,不要自己寫密碼的hash演算法 !關於保存密碼的問題已經有了成熟的方案,那就是使用phpass或者本文提供的源碼。
什麼是hash
hash("hello") =
hash("hbllo") =
hash("waltz") =
Hash演算法是一種單向的函數。它可以把任意數量的數據轉換成固定長度的「指紋」,這個過程是不可逆的。而且只要輸入發生改變,哪怕只有一個bit,輸出的hash值也會有很大不同。這種特性恰好合適用來用來保存密碼。因為我們希望使用一種不可逆的演算法來加密保存的密碼,同時又需要在用戶登陸的時候驗證密碼是否正確。
在一個使用hash的賬號系統中,用戶注冊和認證的大致流程如下:
1, 用戶創建自己的賬號
2, 用戶密碼經過hash操作之後存儲在資料庫中。沒有任何明文的密碼存儲在伺服器的硬碟上。
3, 用戶登陸的時候,將用戶輸入的密碼進行hash操作後與資料庫里保存的密碼hash值進行對比。
4, 如果hash值完全一樣,則認為用戶輸入的密碼是正確的。否則就認為用戶輸入了無效的密碼。
5, 每次用戶嘗試登陸的時候就重復步驟3和步驟4。
在步驟4的時候不要告訴用戶是賬號還是密碼錯了。只需要顯示一個通用的提示,比如賬號或密碼不正確就可以了。這樣可以防止攻擊者枚舉有效的用戶名。
還需要注意的是用來保護密碼的hash函數跟數據結構課上見過的hash函數不完全一樣。比如實現hash表的hash函數設計的目的是快速,但是不夠安全。只有加密hash函數(cryptographic hash functions)可以用來進行密碼的hash。這樣的函數有SHA256, SHA512, RipeMD, WHIRLPOOL等。
一個常見的觀念就是密碼經過hash之後存儲就安全了。這顯然是不正確的。有很多方式可以快速的從hash恢復明文的密碼。還記得那些md5破解網站吧,只需要提交一個hash,不到一秒鍾就能知道結果。顯然,單純的對密碼進行hash還是遠遠達不到我們的安全需求...
以上是下面鏈接文章里的片段
具體請查看這個鏈接里的文章:
http://www.freebuf.com/articles/web/28527.html
滿意望採納~
Ⅱ sql server中怎麼給資料庫表中的用戶密碼加密
1、首先我們電腦上要安裝有SQL Server,然後要准備一個MDF資料庫文件。打開SQL Server。
Ⅲ 怎麼對資料庫已有的數據進行加密
第一層
服務主密鑰
備份服務主密鑰
backup
service
master
key
to
file='c:\smk.bak'
encryption
by
password='P@ssw0rd'
restore
service
master
key
from
file='c:\smk.bak'
decryption
by
password='P@ssw0rd'
第二層
資料庫主密鑰
1)必須先在該資料庫上創建資料庫主密鑰才能使用
create
master
key
encryption
by
password='P@ssw0rd'
2)使用資料庫主密鑰
-如果資料庫主密鑰使用服務密鑰進行保護,則在使用時會自動打開
opren
master
key
decryption
by
password='P@ssw0rd'
3)查看資料庫主密鑰狀態
sys.symmetric_keys
4)備份資料庫主密鑰
backup
master
key
to
file='c:\smk.bak'
encryption
by
password='P@ssw0rd'
restore
master
key
from
file='c:\smk.bak'
decryption
by
password='P@ssw0rd'
Ⅳ 資料庫加密的方式有哪幾種
資料庫加密的方式有多種,不同場景下仍在使用的資料庫加密技術主要有:前置代理加密、應用系統加密、文件系統加密、後置代理加密、表空間加密和磁碟加密等,這些你找安策工程師幫你,都是可以做到的網路裡面也有詳細介紹。
Ⅳ 資料庫怎麼加密
資料庫加密作為近年來興起的資料庫安防技術,已經被越來越多的人所重視。這種基於存儲層加密的防護方式,不僅可以有效解決資料庫明文存儲引起的泄密風險,也可以防止來自內部或者外部的入侵及越權訪問行為。從技術手段上來看,現今資料庫加密技術主要有三大類,分別是前置代理及加密網關方式、應用層加密方式以及後置代理方式,其中後置代理技術有有兩種不同的技術路線,分別為:基於視圖和觸發器的後置代理技術和基於TDE技術的加密技術。你與安華金和了解下吧,以前他們還專門有過相關文章介紹。