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