前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >HTTP: 一个关于 safari 安全策略引发的 cookie 问题

HTTP: 一个关于 safari 安全策略引发的 cookie 问题

作者头像
西南_张家辉
发布2021-02-02 10:13:53
1.2K0
发布2021-02-02 10:13:53
举报
文章被收录于专栏:张家辉的树屋

Cookie safari bugs

  • 因为 mac os(safari,iphone(h5),ipad 等) 安全策略的问题,在设置安全 cookie 的时候,在验证图形验证码的时候,会出现储存不了 cookie 的情况,以至于后端接口验证不能通过。
  • support.apple.com/zh-cn/guide…
解决方案

接口使用无 cookie 方式传递,在获取图形验证码的时候,约定一个参数。供验证验证码的时候使用。

cookie 常识

什么是 HTTP Cookie

HTTP Cookie(也叫Web Cookie或浏览器Cookie)是服务器发送到用户浏览器并保存在本地的一小块数据,它会在浏览器下次向同一服务器再发起请求时被携带并发送到服务器上。通常,它用于告知服务端两个请求是否来自同一浏览器,如保持用户的登录状态。Cookie使基于无状态的HTTP协议记录稳定的状态信息成为了可能。

Cookie主要用于以下三个方面:

  • 会话状态管理(如用户登录状态、购物车、游戏分数或其它需要记录的信息)
  • 个性化设置(如用户自定义设置、主题等)
  • 浏览器行为跟踪(如跟踪分析用户行为等)

cookie 的作用域

  • Domain 和 Path 标识定义了Cookie的作用域:即Cookie应该发送给哪些URL。
  • Domain 标识指定了哪些主机可以接受Cookie。如果不指定,默认为当前文档的主机(不包含子域名)。如果指定了Domain,则一般包含子域名。

例如,如果设置 Domain=mozilla.org,则Cookie也包含在子域名中(如developer.mozilla.org)。

Path 标识指定了主机下的哪些路径可以接受Cookie(该URL路径必须存在于请求URL中)。以字符 %x2F ("/") 作为路径分隔符,子路径也会被匹配。

例如,设置 Path=/docs,则以下地址都会匹配:

代码语言:javascript
复制
/docs
/docs/Web/
/docs/Web/HTTP

服务端怎么设置和创建的 Cookie

  • 创建Cookie节

当服务器收到HTTP请求时,服务器可以在响应头里面添加一个Set-Cookie选项。浏览器收到响应后通常会保存下Cookie,之后对该服务器每一次请求中都通过Cookie请求头部将Cookie信息发送给服务器。另外,Cookie的过期时间、域、路径、有效期、适用站点都可以根据需要来指定。

Set-Cookie响应头部和Cookie请求头部节 服务器使用Set-Cookie响应头部向用户代理(一般是浏览器)发送Cookie信息。一个简单的Cookie可能像这样:

代码语言:javascript
复制
Set-Cookie: =
set-cookie
  • 响应首部 Set-Cookie 被用来由服务器端向客户端发送 cookie。

服务器通过该头部告知客户端保存Cookie信息。

chrome 的储存器

存储查看器使你能够查看网页使用的多种存储类型。如今,它能够查看如下存储类型:

  • Cache 缓存 — 使用缓存 API 创建的任何 DOM 缓存
  • Cookies — 所有页面创建的 cookies 或页面中任何的 iframes。还列出了作为网络呼叫响应的一部分创建的 Cookie,但仅适用于工具打开时发生的响应
  • IndexedDB — 所有页面创建的IndexedDB或或页面中任何的- IndexedDB。其对象存储以及存储在这些对象库中的项目。

本地存储— 所有页面创建的本地存储或页面中任何的 iframes

  • Session存储—所有页面创建的 Session 或页面中任何的 iframes

Cookies 节点

当你从存储树中选择Cookies存储类型的一个源时,会在表格小部件中列出该cookies的所有源。cookies表有以下列:

  • Name— cookie的名称
  • Path — cookie的路径属性
  • Domain — cookie的域
  • Expires on — cookie过期时间,如果cookie是session, 此列的值将为session
  • Last accessed on — 上次读取cookies的时间
  • Created on — cookie创建时间
  • Value — cookie的值
  • HostOnly — 这个cookie是不是一个域的cookie,如果是,域名以“.”为开头
  • Secure — cookie是不是安全的
  • HttpOnly — cookie是不是 HTTP only

同一站点 — 这个cookie是同一站点的cookie吗? 相同站点cookie允许服务器通过断言特定cookie应仅与同一可注册域发起的请求一起发送来减轻CSRF和信息泄漏攻击的风险。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 解决方案
  • cookie 常识
    • 什么是 HTTP Cookie
      • cookie 的作用域
        • 服务端怎么设置和创建的 Cookie
          • set-cookie
        • chrome 的储存器
          • Cookies 节点
          相关产品与服务
          数据库
          云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档