确认访问用户身份的认证
常见的认证信息如下:
- 密码:只有本人才会知道的字符串信息
- 动态令牌:仅限本人持有的设备显示的一次性密码
- 数字证书:仅限本人(设备)持有的信息
- 生物认证:指纹和虹膜等本人的生理信息
- 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)