计算机网络面试题, Cookie,Session,Token 之间有什么区别?
计算机网络面试题, Cookie,Session,Token 之间有什么区别?
QA
Step 1
Q:: Cookie、Session、Token 之间有什么区别?
A:: Cookie、Session 和 Token 都是用于用户身份认证和会话管理的技术。Cookie 是一种存储在用户浏览器端的小文件,用于在同一站点的多次请求之间存储用户数据。Session 是在服务器端保存的用户会话信息,通常使用 Session ID 存储在 Cookie 中。Token 则是一种携带身份信息的令牌,通常是 JWT(JSON Web Token),可以在不同的服务之间传递,不依赖于服务器的状态。
Step 2
Q:: Cookie 如何实现用户追踪?
A:: Cookie 是浏览器存储在用户终端的一小段数据,用于跟踪和识别用户的请求。在 HTTP 请求中,浏览器会自动携带 Cookie 信息,服务器可以根据这些信息识别用户并返回相应的响应,从而实现用户追踪。常见用途包括会话管理、个性化设置和广告投放。
Step 3
Q:: Session 和 Cookie 的生命周期是如何管理的?
A:: Session 通常存储在服务器端,其生命周期受服务器设置和用户活动影响,当用户长时间不活动或者关闭浏览器后,Session 可能会失效。Cookie 的生命周期由其 'Expires' 或 'Max-Age'
属性控制,可以设置为会话期(Session Cookie)或具体的过期时间。
Step 4
Q:: Token 相比于 Session 有哪些优缺点?
A:: Token 的主要优点是无状态性,服务器不需要存储用户的会话信息,便于横向扩展,适合分布式系统和微服务架构。缺点包括 Token 的解析和验证需要额外的计算资源,Token 被泄露后可能导致安全风险。与之相比,Session 是有状态的,服务器需要管理用户的会话信息,扩展性较差,但在安全性上更易于控制。
Step 5
Q:: 如何防止 Cookie 劫持和 CSRF 攻击?
A:: 可以通过以下方式防止 Cookie 劫持和 CSRF 攻击:1. 使用 HTTPS 以加密传输中的 Cookie 数据;2. 设置 Cookie 的 HttpOnly 属性,防止 JavaScript 访问;3. 设置 SameSite 属性为 'Strict' 或 'Lax' 以减少跨站请求伪造的风险;4.
使用 CSRF Token 进行请求验证。