资讯专栏INFORMATION COLUMN

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

xiaoxiaozi / 2641人阅读

摘要:因为,,等安全策略的问题,在设置安全的时候,在验证图形验证码的时候,会出现储存不了的情况,以至于后端接口验证不能通过。使基于无状态的协议记录稳定的状态信息成为了可能。如果不指定,默认为当前文档的主机不包含子域名。

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,则以下地址都会匹配:

/docs
/docs/Web/
/docs/Web/HTTP
服务端怎么设置和创建的 Cookie

创建Cookie节

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

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

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和信息泄漏攻击的风险。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/6887.html

相关文章

  • 浏览器同源策略,及跨域解决方案

    摘要:三哪些会受到同源策略限制对于浏览器来说,除了会受到同源策略的限制外,浏览器加载的一些第三方插件也有各自的同源策略。九的现代浏览器允许脚本直连一个地址而不管同源策略。 一、Origin(源) 源由下面三个部分组成: 域名 端口 协议 两个 URL ,只有这三个都相同的情况下,才可以称为同源。 下来就以 http://www.example.com/page.html 这个链接来比较说...

    scq000 评论0 收藏0
  • 关于 Web 安全,99% 网站都忽略了这些

    摘要:比如基于的方法我认为只有是正当的绕过同源策略的方法同源策略是浏览器安全策略的基础,但同源策略面对很多攻击是无能为力的,比如跨站脚本攻击,名字跟同源策略很像,事实上他们之间基本没有关系。 作者:肖光宇 野狗科技联合创始人,先后在猫扑、百度、搜狗任职,爱折腾的前端工程师。野狗官博:https://blog.wilddog.com/ 野狗官网:https://www.wilddog.com...

    olle 评论0 收藏0
  • 以登录注册理解Cookie作用过程

    摘要:需要注意的细节问题为什么前后端都要进行表单验证前后端都要验证邮箱格式是否正确,账号密码格式是否正确,两次提交的密码是否相同等。因为黑客可以绕过前端的验证流程,例如黑客可以直接使用进行请求的发送,直接与后台服务器进行交互。 这篇文章是前一篇文章(Cookie理论知识)的实践性理解 完整代码: 完整代码 Cookie在注册登录时的作用过程: 注册 注册时把账号密码写入数据库 登录 第一次登...

    cheng10 评论0 收藏0
  • 面试题总结

    摘要:所以个人建议将登陆信息等重要信息存放为其他信息如果需要保留,可以放在中和属性的异同共同点对内联元素设置和属性,可以让元素脱离文档流,并且可以设置其宽高。不同点仍会占据位置,会覆盖文档流中的其他元素。 说说你对闭包的理解 使用闭包主要是为了设计私有的方法和变量。闭包的优点是可以避免全局变量的污染,缺点是闭包会常驻内存,会增大内存使用量,使用不当很容易造成内存泄露。 闭包有三个特性: 函...

    RiverLi 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<