学习笔记 图解HTTP 第8章 确认访问用户的身份认证

124 阅读2分钟

8.1 何为认证

访问一个网站的时候,要查看个人的银行卡等私有信息,不能随便谁都可以看吧,就必须证明你是这个信息的所有人才行.所以需要认证

8.2 BASIC认证

步骤

  • 客户端发起请求
  • 服务器返回401要求进行BASIC认证
  • 客户端把帐号密码通过BASE64编码后发给服务器
  • 服务器验证帐号密码成功后,返回相应数据

存在的问题

  • BASE64并不是加密,任何人看到后都可以解码,在HTTP上被人截获后密码就丢了
  • 一般的浏览器无法实现认证注销操作(不明白是啥意思)

8.3 DIGEST认证

  • 客户端发起请求
  • 服务器返回401和随机码要求进行验证
  • 客户端用随机码把密码加密后,和用户名一起,传给服务器
  • 服务器验证帐号密码成功后返回数据

存在的问题

  • 虽然解决了BASIC密码可能会被盗的风险
  • 但是不防止中途被整体篡改

8.4 SSL客户端认证

8.4.1 SSL客户端的认证步骤

  • 服务器收到请求,要求客户端提供证书
  • 客户端将证书发送给服务器
  • 服务器验证客户端成功后,开始SSL加密通信

8.4.2 SSL客户端认证采用双因素认证

  • SSL客户端证书,用来验证客户端计算机
  • 帐号密码用来验证用户本人

8.4.3 存在的问题

客户端证书要花钱,看别个的网站还要我花钱买证书,肯定没人愿意干,所以出见了基于表单的认证

8.5 基于表单认证

在实现表单认证的时候,要充分考虑安全性能.估计95%的网站都没有达到这个要求吧....

一般是通过传递SESSIONID给客户端,客户端以后每次都带上SESSIONID表明身份

存在的问题

  • 如果SESSIONID被盗了,那别人也能使用你的身份访问网站了