HTTP权威指南-12-13
2016-10-02第十二章 基本认证机制
认证的四个步骤:
步骤 | 首部 | 描述 | 方法/状态 |
---|---|---|---|
请求 | 第一条没有请求认证信息 | GET | |
质询 | WWW-Authenticate | 服务器用401状态拒绝了请求,说明需要用户提供用户名和密码 | 401 Unauthorized |
授权 | Authorization | 客户端重新发出请求,但这次会附加一个Authorization首部,用来说明认证算法、用户名和密码 | GET |
成功 | Authorization-Info | 如果授权证书正确,服务器会将文档返回,有些授权算法会在可选的Authorization-Info首部返回一些与授权会话相关的附加信息 | 200 OK |
⚠️基本认证中不包括Authorization-Info首部
基本认证的安全缺陷
- 基本认证会通过网络发送用户名和密码,这些用户名和密码都是以一种很容易的解码的形式表示的。
- 即使密码是以更难解码的方式加密的,第三方用户仍然可以捕获被修改过的用户名和密码,并将修改过的用户名和密码一次次重放给原始服务器,以获取服务器访问授权,没有什么措施可以用来防止重放攻击。
- 即使将基本认证用于一些不太重要的的应用程序,一些不良习惯也会让它变得危险。比如很多用户的很多账号都是用相同的密码,若某些恶徒先获取了基本认证的密码然后尝试某些重要的在线银行网站!
- 基本认证没有提供任何针对代理和作为中间人的中间节点的防护措施,他们没有修改认证首部,但却修改了报文的其余部分,这样就严重地改变了事务的本质。
- 假冒服务器 很容易骗过基本认证。
基本认证与加密数据传输(比如SSL)配合使用,会使基本认证变得更加安全。这是一种常用技巧。
第十三章 摘要认证
在基本认证的基础上添加了更多的限制条件。
- 客户端发起GET请求
- 服务器产生随机数WWW-Authenticate质询,服务器发送域随机数和算法
- 客户端从算法集中选择一个算法产生响应摘要及客户端随机数,Authorization作为向服务器的请求。
- 服务器对摘要进行认证,并产生下一个随机数,返回客户端Authorization-Info信息及下一个需要认证时发送的随机数
⚠️:摘要认证还有很多安全性相关的技巧