確認(rèn)訪問用戶身份的認(rèn)證
常見的認(rèn)證信息如下:
- 密碼:只有本人才會知道的字符串信息
- 動態(tài)令牌:僅限本人持有的設(shè)備顯示的一次性密碼
- 數(shù)字證書:僅限本人(設(shè)備)持有的信息
- 生物認(rèn)證:指紋和虹膜等本人的生理信息
- IC卡等
HTTP使用的認(rèn)證方式
HTTP/1.1使用的認(rèn)證方式如下:
- BASIC認(rèn)證(基本認(rèn)證)
- DIGEST認(rèn)證(摘要認(rèn)證)
- SSL客戶端認(rèn)證
- FormBase認(rèn)證(基于表單認(rèn)證)
BASIC認(rèn)證
Basic認(rèn)證的步驟:
BASIC認(rèn)證使用上不夠便捷靈活象缀,安全性低,因此并不常用
DIGEST認(rèn)證
DIGEST認(rèn)證同樣使用質(zhì)詢/響應(yīng)的方式,但不會像BASIC那樣直接發(fā)送明文密碼琼开。
DIGEST認(rèn)證的步驟:
說明:
response是由username侧巨、realm稠歉、password等信息經(jīng)過MD5加密后的字符串射众,形成響應(yīng)碼
DIGEST認(rèn)證提供了高于BASIC認(rèn)證的安全等級澎胡,但是HTTPS的客戶端認(rèn)證相比仍舊很弱钮追。DIGEST認(rèn)證提供防止密碼被竊聽的保護機制预厌,但并不存在防止用戶偽裝的保護機制。
DIGEST認(rèn)證和basic認(rèn)證一樣元媚,使用上不那么便捷靈活轧叽,安全等級也達不到多數(shù)Web網(wǎng)站對高安全等級的追求標(biāo)準(zhǔn),因此其使用范圍也有所受限刊棕。
SSL客戶端認(rèn)證
SSL客戶端認(rèn)證是借由HTTPS的客戶端證書完成認(rèn)證的方式炭晒,憑借客戶端證書認(rèn)證,服務(wù)器可確認(rèn)訪問是否來自合法的客戶端
SSL客戶端認(rèn)證的步驟:
(見上一篇)
多數(shù)情況下甥角,SSL客戶端認(rèn)證不會僅依靠證書認(rèn)證网严,一般和基于表單認(rèn)證組合形成一種雙因素認(rèn)證來使用
SSL客戶端認(rèn)證需要一些必要的費用,除了從認(rèn)證機構(gòu)購買客戶端證書的費用嗤无,服務(wù)器運營者為保證自己搭建的認(rèn)證機構(gòu)安全運營業(yè)要花費費用
基于表單認(rèn)證
大多數(shù)Web網(wǎng)站的認(rèn)證是基于用戶名/密碼的表單認(rèn)證震束,一般會使用Cookie來管理Session
基于表單認(rèn)證的登錄信息及認(rèn)證過程都無標(biāo)準(zhǔn)化的方法,服務(wù)器端應(yīng)如何保存用戶提交的密碼等登錄信息也沒有標(biāo)準(zhǔn)化
通常当犯,一種安全的保存方法是垢村,先隨機生成一個字符串,然后將隨機字符串與目標(biāo)字符串連接生成散列值后保存灶壶,這種增加額外信息叫做給密碼加鹽(salt)