HTTP的几种认证方式之FormBase 认证(基于表单认证)

HTTP/1.1 使用的认证方式有
  1)BASIC 认证(基本认证);
  2)DIGEST 认证(摘要认证);
  3)SSL 客户端认证;
  4)FormBase 认证(基于表单认证);

本文目录:

1、基于表单认证

  基于表单的认证方法并不是 HTTP 协议中定义的 。客户端会向服务器上的 Web 应用程序发送登陆信息,按登陆信息的验证结果认证。根据 Web 应用程序的实际安装,提供的用户界面及认证方式也各不相同。多数情况下,输入用户名 ID 和密码等登陆信息后,发送给 Web 应用程序,基于认证结果来决定认证是否成功。

  由于使用上的便利性及安全性问题,HTTP 协议标准提供的 BASIC 认证和 DIGEST 认证几乎不怎么使用。另外,SSL 客户端认证虽然具有高度的安全等级,但因为导入及维持费用等问题,还尚未普及。

  不具备共同标准规范的表单认证,在每个 Web 网站上会有各自不同的实现方式。如果时全面考虑过安全性能而实现的表单认证,那么就能够具备高度的安全等级。

2、基于表单认证一般会使用Cookie 来管理 Session(会话)

  基于表单认证本身是通过服务器端的 Web 应用,将客户端发送过来的用户 ID 和密码进行校验。但鉴于 HTTP 是无状态协议,之前已认证成功的用户状态无法通过协议层面保存下来。即无法实现状态管理,因此即使当该用户下一次继续访问,也无法区分他与其他的用户。于是我们会使用 Cookie 来管理 Session,以弥补 HTTP 协议中不存在的状态管理功能。

   步骤1:客户端把用户 ID 和密码等登陆信息放到报文的实体部分,通常是以 POST 方法把请求发送给服务器。而这时,会使用 HTTPS 通信来进行 HTML 表单页面的显示和用户输入数据的传输。

  步骤2:服务器会发放用以标识用户的 Sesssion ID。通过验证从客户端发送过来的登陆信息进行身份认证,然后把用户的认证状态与 Session ID 绑定后记录在服务器端。

  向客户端返回响应时,会在首部字段 Set-Cookie 内写入 Session ID(如 PHPSESSID=028a8c...)。然而,如果 Session ID 被第三方盗走,对方就可以伪装成你的身份进行恶意操作了。因此必须防止 Session ID 被盗,或被猜出。为了做到这点,Session ID 应使用难以推测的字符串,且服务器端也需要进行有效期的管理,保证其安全性。另外,为减轻跨站脚本攻击(XSS)造成的损失,建议事先在 Cookie 内加上 httponly 属性

3、Java + SpringBoot 实现基于表单登陆

猜你喜欢

转载自www.cnblogs.com/xy-ouyang/p/12616404.html