-
使用Cookie
工作原理:当用户登录网站后,服务器发送一个或多个 Cookie 到客户端(浏览器),客户端会保存这些 Cookie,并在随后的每个请求中自动将它们发送回服务器,以便服务器识别用户。
优点:实现简单,使用广泛。
缺点:安全风险较高,容易受到跨站脚本攻击(XSS)影响,容量限制(每个 Cookie 大小限制在4KB左右),并且每次HTTP请求都会携带Cookie,增加了额外的网络负载。
安全策略:使用安全属性(Secure)、HttpOnly 属性增强安全性。 -
使用Session
工作原理:服务器使用 Session 跟踪用户的状态。这通常通过在服务器上存储数据实现,同时用一个唯一的 Session ID 来标识每个用户,该 ID 通常通过 Cookie 发送给用户浏览器。
优点:可以存储较多数据,相对安全。
缺点:随着用户数量的增加,Session 会消耗大量服务器资源。不易于横向扩展,因为用户的后续请求可能由不同的服务器处理,需要额外机制来共享 Session 状态。 -
使用Token(如 JWT)
工作原理:在服务器验证用户的登录信息后,生成一个含有用户信息的Token(常使用JWT),发送给客户端。客户端后续请求时将Token携带在请求头中,服务器通过验证Token来识别用户。
优点:不需要在服务器存储用户状态,减轻服务器压力,易于实现应用的横向扩展。支持跨域认证,并且可以设计为自包含且安全。
缺点:一旦Token被泄露,攻击者可以在Token有效期内使用该Token访问服务器资源。