HTTP 使用的认证方式:
BASIC认证(基本认证)
DIGEST认证(摘要认证)
SSL客户端认证
FormBase(基于表单认证)
1、BASIC认证
是web服务器与通信客户端之间进行的认证方式

BASIC认证虽然采用base64编码方式,但这不是加密处理,不需要任何附加信息即可对其解码。使用上不够便捷灵活,且达不到多数web网站期望的安全性等级。因此并不常用。
2、DIGEST认证
从HTTP/1.1起,有了DIGEST认证。

DIGEST认证提供了高于BASIC认证的安全等级,但是和HTTPS的客户端认证相比仍旧很弱。DIGEST认证提供防止密码被窃听的保护机制,但并不存在防止用户伪装的保护机制。
使用上也不便捷灵活,达不到安全等级的追求标准,适用范围有限。
3、SSL客户端认证
SSL客户端认证是借由HTTPS的客户端证书完成认证的方式,凭借客户端证书认证,服务器可确认访问是否来自己登录的客户端。
3.1 SSL客户端认证的认证步骤
先将客户端证书分发给客户端,且客户端必须安装此证书。
1 - 服务器 -->发送Certificate Request报文,要求客户端提供客户端证书
2- 用户选择证书 客户端-->把客户端证书信息以Client Certificate报文方式发送给服务器
3- 服务器验证,然后开始HTTPS通信
3.2 SSL客户端认证采用双因素认证
一般不会仅依靠证书,一般会基于表单认证组合形成一种双因素认证来使用。
3.3 SSL客户端认证必要的费用
4、FormBase
基于表单的认证方法并不是在HTTP协议中定义的。
客户端会向服务器上的web应用程序发送登录信息,按登录信息的验证结果认证。
4.1 认证多半为基于表单认证
4.2 Session管理及Cookie应用

不仅基于表单认证的登录信息及认证过程都无标准化的方法,服务器端应如何保存用户提交的密码等登录信息等也没有标准化。
一种安全的保存方法:先利用给密码加盐的方式增加额外信息,再使用散列函数计算出散列值后保存。
加盐:由服务器随机生成一个字符串,足够长,真正随机。然后把它和密码字符串 相连接,生成散列值。
















