浏览器能否先设置cookie再跳转_如何快速技术升级?应对Chrome新版禁非法读取第三方Cookie...
发布日期:2021-09-13 19:08:22 浏览次数:2 分类:技术文章

本文共 3054 字,大约阅读时间需要 10 分钟。

01 如何快速升级

有同学来问我如何快速技术升级?

以应对近期谷歌将在2月4日Chrome80版中对第三方Cookie的禁止非法读取。

新规则是:仅“ SameSite=None; Secure ”的第三方Cookie才能被Chrome发送给服务器。

简单说就是:第三方服务要想读取第三方Cookie,技术升级需要满足如下两个条件:

1.在种Cookie时需按如下声明

Set-Cookie: my_cookie=abc123; SameSite=None; Secure

2.读取Cookie接收的网络URL必须是HTTPS的

https://github.com/GoogleChromeLabs/samesite-examples

网站中已给出了各种语言代码的样例:

PHP:

PHP 7.3.0 已支持 setcookie() 函数

setcookie('cross-site-cookie', 'bar', ['samesite' => 'None', 'secure' => true]);

早期版本的PHP需使用 header() 函数

header('Set-Cookie: cross-site-cookie=bar; SameSite=None; Secure');

JavaScript:

document.cookie = 'cross-site-cookie=bar; SameSite=None; Secure';

JAVA:

目前也只能通过setHeader() 函数设置

response.setHeader("Set-Cookie", "key=value; SameSite=None; Secure”);

Python:

Python 3.8 Bate中:http.cookies 增加了相关支持

否则还是需要使用header来设置

Python - Flask:

resp.headers.add('Set-Cookie','cross-site-cookie=bar; SameSite=None; Secure')

ASP.NET:

可参考如下文章打补丁,然后就可用了:

https://github.com/GoogleChromeLabs/samesite-examples/blob/master/aspnet.md

当然在上述代码使用 setHeader() 函数,要小心在复杂架构及框架组合下,覆盖其他cookie的设置代码。

上面我们先讲了供各技术快速升级的实操结论,如何快速升级解决2月4日Chrome80新版对第三方Cookie禁止非法读取。

02 CSRF攻击的危害

下面我们来看看为什么要对第三方Cookie禁止非法读取,重点还是为了防止CSRF(跨站点请求伪造Cross—Site Request Forgery)攻击:

由于Http协议是无状态的,所以很多网站需要能跟踪用户的状态,就需要在用户的浏览器中种下Cookie。

(有关于cookie的基本概念以及CookieMapping的内容可参看旧文《什么是CookieMapping》 )

举个CSRF攻击的例子:

用户在某金融网站a-bank.com成功登陆时,服务器便可给浏览器发一个cookie并存在用户电脑上

Set-Cookie:a-bank-id=q89df;

若该用户访问了一个恶意网站bad.com时,该恶意网站若诱骗该用户模拟登录等操作时,该金融网站会收到已被保存Cookie请求,并认为是该用户的真实请求,而为期进行账务操作,即该金融网站遭到了CSRF攻击,造成的无法挽回的损失。

当然第三方Cookie还可帮助很多网络服务商(尤其是第三方广告服务商),在用户访问其他网站时,能够追踪该用户,为其提供精准的广告服务。

只要在网站中插入一张广告图片的服务即可:

03 关于SameSite

Cookie新增SameSite属性限制第三方Cookie的非法使用,降低安全风险。三个值:StrictLaxNone

协议规范文件可参看:

https://tools.ietf.org/html/draft-ietf-httpbis-cookie-same-site-00

Strict

最严格,完全禁止第三方Cookie,跨站点时,任何情况下都不会发送Cookie。换言之,只有当前网页的URL与请求目标一致,才会带上Cookie。

Set-Cookie: CookieKey=CookieValue; SameSite=Strict;

由于规则过于严格,用户体验非常不好。例如,当前网页有一个a.com的链接,用户点击跳转至a.com时不会携带其Cookie,跳转过去总是未登录状态。

Lax

规则稍稍放宽,大多数情况也是不发送第三方Cookie,但是有三种情况例外:

链接:

预加载:

GET表单:

如下情况均被禁止:

POST表单:

iframe:

AJAX:$.get("...")

Image:

可见设置了Strict或Lax,基本能杜绝CSRF攻击。但前提是用户浏览器支持SameSite属性。

None

Chrome新版将会以Lax为默认设置。要想第三方服务能读取到Cookie,就需要如本文开头的那样,在种Cookie是显式设置SameSite=None。而且必须同时设置Secure属性(Cookie只能通过HTTPS协议发送),否则无效。

Set-Cookie: my_cookie=abc123; SameSite=None; Secure

04 结语

当然,近期还有消息称:1月14日,谷歌宣布Chrome浏览器将在“两年内”逐步淘汰跨网站第三方cookie的使用。

我的个人观点:

1.广告占谷歌商业板块中非常大的比重,即使第三方cookie被彻底关闭,很可能也会效仿移动端ADID那样,提供给用户一个可重置可关闭追踪,用户可对个人隐私保护进行设置的东东。

2.在这个新规范新机制不断完善升级的过程中,很多可能会尝试辅助“浏览器指纹”技术来追踪用户,但从个人隐私保护角度来看,“浏览器指纹”迟早也会被各种办法堵上的。

3.而且国内特殊的网络情况,只要不是国内浏览器厂商加速升级,Chrome新版极其覆盖广告流量的占比可能不会那么快的上来。

关于这个问题的发展,还是让我们持续关注吧!

相关参考内容:

https://web.dev/samesite-cookies-explained/

https://github.com/GoogleChromeLabs/samesite-examples

- 广告分割线 -

若以上内容还不过瘾,更多精彩干货尽在如下视频课:

《24小时精通程序化广告课程录播_高清PPT图_不限时》

《16小时入门Martech数字化转型,玩转广告商业化》

《大数据人工智能贯穿广告营销作业前中后期的创新应用》

《线性智能预测统计学实务(0基础统计学上手实务系列—大数据人工智能的重要基石)》

《运营优化A/B测试统计学实务(0基础统计学上手,大数据人工智能的重要基石)》

《统计学基础入门(0基础统计学上手实务系列—大数据人工智能的重要基石)》

《0基础迅速掌握演讲技能》

《职场打怪试炼能力地图》

可千聊App中搜 “程序化广告实战” 视频直播间

(转载请注明出处:微信订阅号:ad_automation )

转载地址:https://blog.csdn.net/weixin_39926014/article/details/110991765 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:python大数据是什么意思_大数据是什么意思
下一篇:resnet预训练模型_23个系列分类网络,10万分类预训练模型,这是飞桨PaddleClas百宝箱...

发表评论

最新留言

路过按个爪印,很不错,赞一个!
[***.219.124.196]2024年04月08日 10时34分16秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章

【C++深度剖析教程40】使用数值型模板技术计算1+2+3+...+N的值 2019-04-28
【OS学习笔记】十七 保护模式五:保护模式下如何进行内存保护 与 别名段的意义与作用 2019-04-28
【OS学习笔记】二十四 保护模式七:调用门与依从的代码段----特权级保护 2019-04-28
【OS学习笔记】二十五 保护模式七:任务和特权级保护对应的汇编源代码 2019-04-28
【OS学习笔记】二十六 保护模式八:任务门---任务切换 2019-04-28
【OS学习笔记】二十七 保护模式八:任务切换的方法之----jmp与call的区别以及任务的中断嵌套 2019-04-28
【OS学习笔记】二十八 保护模式八:任务切换对应的汇编代码之内核代码 2019-04-28
【OS学习笔记】二十九 保护模式八:任务切换对应的汇编代码之用户程序代码 2019-04-28
【OS学习笔记】三十 保护模式九:段页式内存管理机制概述 2019-04-28
【OS学习笔记】三十一 保护模式九:页目录、页表和页三者的关系详解 2019-04-28
【OS学习笔记】三十二 保护模式九:分页机制对应的汇编代码之---内核代码 2019-04-28
【OS学习笔记】三十三 保护模式九:分页机制对应的汇编代码之---用户程序代码 2019-04-28
【剑指offer - C++/Java】12、数值的整数次方 2019-04-28
【剑指offer - C++/Java】13、调整数组顺序使奇数位于偶数前面 2019-04-28
【C语言进阶深度学习记录】三十 二维数组与二维指针 2019-04-28
【C语言进阶深度学习记录】三十一 数组作为函数参数时退化为指针 2019-04-28
【C语言进阶深度学习记录】三十二 函数指针与使用函数指针实现回调函数 2019-04-28
【C语言进阶深度学习记录】三十三 C语言中动态内存分配 2019-04-28
java并发实战 2019-04-28
【C语言进阶深度学习记录】三十四 C语言实现内存泄漏检测模块 2019-04-28