HTTP(8):用户认证

某些web网页指向让特定的人浏览,或干脆仅本人可见,就需要认证功能。

HTTP使用的认证方式

  • BASIC认证(基本认证)
  • DIGEST认证(摘要认证)
  • SSL客户端认证
  • FormBase认证(基于表单认证)

此外还有windows同一认证(Keberos认证、NTLM认证)

BASIC认证

从HTTP/1.0就定义的认证方式,认证虽然采取Base64编码方式,但不是加密处理,明文处理就是账号密码,所以不常用。

另外想在进行一次BASIC认证时,一般浏览器无法实现认证注销操作,所以不够灵活,且达不到网站期望的安全等级。
HTTP(8):用户认证

DIGEST认证

从HTTP/1.1起就有了。同样适用质询/响应的方式:一方先发送认证要求给另一方,接着适用从另一方那接收到的质询码计算生成响应码。最后将质询码返回给对方认证的方式。

比BASIC安全等级高,但是和HTTPS比仍旧很弱。提供防止密码被窃听的保护机制,但无法防止用户伪装。同样因为不便捷灵活和达不到web网站对高度安全等级的追求标准,使用范围受限。
HTTP(8):用户认证

SSL客户端认证

SSL客户端认证是借由HTTPS的客户端证书完成认证的方式。

前提:需要事先将客户端证书分发给客户端,且客户端必须安装此证书。(支付宝之前也安装数字证书,现在好像不需要手动操作还是不用这个了)

步骤:

  1. 接收到需要认证资源的请求,服务器会发送Certificate Request报文,要求客户端提供客户端证书。
  2. 客户端把客户端证书以Client Certificate报文方式发送给服务器。
  3. 服务器验证客户端证书后,使用此证书内的公钥,开始HTTPS加密通信。

SSL客户端采取双因素认证,证书认证和基于表单认证。证书验证客户端计算机,表单认证验证这是用户本人行为。

基于表单认证

就是用户名密码之类的表单登录。

这是用户本人行为。

基于表单认证

就是用户名密码之类的表单登录。

密码保存方法:一种安全的保存方法是给密码加盐(salt)的方式增加额外信息,再使用散列函数计算出散列值后保存。

相关文章: