2026/4/7 15:16:17
网站建设
项目流程
宁波淘宝网站建设,罗湖网站设计价格,男的和女的做那种短视频网站,seo排行榜年度10佳网站不需要走网络、不会影响资源的加载流程
Cookie
Cookie 是浏览器用来存储少量文本数据的小型文件 (≤ 4KB )#xff0c;每次发送请求的时候都会自动携带和这个域名关联的 Cookie#xff0c;主要用于例如
会话管理#xff08;Session ID)、登录状态#xff08;SSO#xf…不需要走网络、不会影响资源的加载流程CookieCookie 是浏览器用来存储少量文本数据的小型文件 (≤ 4KB)每次发送请求的时候都会自动携带和这个域名关联的 Cookie主要用于例如会话管理Session ID)、登录状态SSO方便服务器端识别是谁个性化设置如themedark languagezh跨站跟踪例如页面中嵌入了广告商的 img 广告商域名会设置自己的 Cookie 当访问另一个同域的网站时就能识别出是同一个用户内容Cookie 存储在浏览器内部每个域名都有自己Cookie的名称值过期时间安全属性浏览器会自动管理它们开发者无法指定目录存放位置生命周期Cookie有两种1. 会话 Cookie ( Session Cookie )没有设置 expires 或max-age当浏览器关闭时自动删除2. 持久化 Cookie ( Persistent Cookie )设置了过期时间到时候会自动删除例如Set-Cookie: tokenabc123; Max-Age3600Max-Age 的单位是 秒 表示一个小时后自动删除Cookie 是如何跟随请求的例如服务器创建Cookie并返回Set-Cookie: session_idxyz; HttpOnly; Secure; Path/;那么浏览器自动存储和管理之后访问同域名页面时会自动携带Cookie: session_idxyz安全隐患Cookie 被偷走或者滥用都是无感的1. XSS在页面中注入 JS 读取document.cookie但是不能读 HttpOnly 的开启后只能服务器使用、防止JS读Cookie如果被读到了 session_id 或 token 那登录态就泄露了对方可以直接设置同样的 Cookie 然后伪装身份进行登录即会话挟持2. CSRF利用请求同域时会自动带上Cookie的特性例如之前你登录过 bank.com 后面你不小心点击了 bank.com/transer 导致能拿到你的 Cookie 然后识别你的身份进行了操作可以通过设置SameSite Strict任何跨站都不带 Cookie或者设置为Lax那么跳转进来是可以携带的在敏感信息上设置一个隐藏的随机 token 例如input type hidden name csrf_token value xxxx每次 POST/操作请求 都必须带上这个 token服务器验证 token 是否匹配、是否过期重要属性1. secure确保 Cookie 只能在 HTTPS下传输防止 HTTP 明文环境被窃听2. HttpOnly3. SameSite4. Path指定 Cookie 作用的路径例如 Path/a 那么只有在 /a 时会发送 Cookie5. Domain限制 Cookie 生效范围例如设置了 Domain k.com那么 a.k.com 和 b.k.com 都能拿到Token结合Cookie实现登录管理1. 长短期双Token - 前后端分离短期令牌 Access Token 放在前端例如 localStorage 中长期令牌 Refresh Token 放在 HttpOnly Cookie 中供服务器端使用防XSS且开启 Secure登录前端发送 POST 请求服务器验证成功后返回 长期令牌Set-Cookie: refresh_tokenxxx; HttpOnly; Secure; SameSiteLax; Max-Age7d浏览器自动放到 Cookie 中并在 响应体 中返回 短期令牌{ access_token: xxx, expire_in: 900 }前端保存到内存JS变量或者 localStorage 中调用业务 API 时请求手动携带 Access TokenGET /api/userinfo Authorization: Bearer ACCESS_TOKEN没有过期的话直接服务器验证然后返回如果服务器返回401表示短期令牌 Access Token 过期了那么前端立即调用 POST /api/refresh_token 携带上 长期令牌 refresh_token 去请求服务器端验证长期令牌成功后会在响应体中返回新的 短期令牌 前端更新 Access Token如果返回403表示长期令牌也过期了那么就需要重新登录2. 所有 Token 都放在 HttpOnly Cookie 中在登录后服务器返回 Cookie前端访问 API 的时候不用手动个携带信息Cookie请求时自动携带了后端直接从 Cookie 中读取 token 进行验证需要注意 CSRF 得打开 SameSite 为 Strict 或 Lax3. 传统 Session 模式Cookie 只存 sessionId , Token 由服务器端管理登录后服务器返回 Cookie 是 SessionId前端每次请求都会携带这个 SessionId Cookie如果 Cookie 是 Session 会话级的那么页面关闭就需要再次登录请求如果是 持久化 Cookie 的话就看过期时间SSO单点登录 - cookie浏览器端自动附带凭证的唯一可靠机制就是 Cookie浏览器不会自动携带 localStorage 、sessionStorage、IndexedDB 的数据4KB所以要实现自动登陆、无感跳转本质就只有 Cookie 能进行验证开启 SameSite None; SecurelocalStorage、SessionStorage5MB是浏览器暴露给 JS 的持久化存储方式通过键值对形式进行管理属于 Web Storage 无法像缓存一样参与资源加载