In this post, I dissect a common misconception about the SameSite
cookie attribute and I explore its potential impact on Web security.
TL;DR¶
- The
SameSite
cookie attribute is not well understood. - Conflating site and origin is a common but
记录-交流-Web开发知识分享
可以通过document.cookie直接读取cookie的内容:
var strCookie = document.cookie;
此时,strCookie是一个由该域名下的所有cookie的名/值对所组成的字符串,名/值对间以“分号加空格”分隔。为了方便查看,可以使用split()方法将cookie中的名/值对解析出来,得到一个cookie的列表。然后,再使用相应的解码方式,把cookie的值还原出来。
cookie值的解码方式,取决于之前存储cookie时所采用的编码方式。比如使用encodeComponent()函数对值进行编码,则要使用decodeComponent()函数对其值进行解码。代码如下:
function getCookie(name) {
var cookies = document.cookie;
var list = cookies.split("; "); // 解析出名/值对列表
for(var i
不知不觉也写得比较长了,一次看不完建议收藏夹!本文主要解释与请求状态相关的术语(cookie、session、token)和几种常见登录的实现方式,希望大家看完本文后可以有比较清晰的理解,有感到迷惑的地方请在评论区提出。
众所周知,http 是无状态协议,浏览器和服务器不可能凭协议的实现辨别请求的上下文。…
In this post, I dissect a common misconception about the SameSite
cookie attribute and I explore its potential impact on Web security.
SameSite
cookie attribute is not well understood.去网上搜了下关于Cookie的介绍,看了好几篇都长得很一样,阉割一下内容不外乎说是"不同浏览器限制cookie数不同,大致在30-50这个范围,(前缀)浏览器允许Cookie多达4KB左右,包括名、值、等号"。
我还在上学那会儿,包括后面毕业后工作一段时间,我也没有特别去关注过这个话题,基本上如果面试官问到我了,也就把网上知道的这些讲了一下。
今年的遭遇给了我思考的时间特别多,最近我又重新去仔细读了下楼上那句话,我发现我读不懂了,第一个,我看的资料并不是特别权威的,也都是网上的博客帖子,对浏览器限制30-50个这个范围产生了一个质疑,是真的吗?第二个是允许多达4KB左右,就很迷糊,到底是一个域名下所有的Cookie加起来的值是4KB左右,还是说单独的Cookie的一个Name所表示的信息它可以是4KB左右,这让我很迷啊。
header('Set-Cookie: cross-site-cookie8=bar; SameSite=None; Secure; domain=p2hp.com; Expires='.gmdate('D, d-M-Y H:i:s', 1597629726) . ' GMT');
…
计算机网络知识,是面试常考的内容,在实际工作中也常常会涉及到。
最近总结了66条计算机网络相关的知识点,大家一起看一下吧:…
苹果公司前不久对 Safari
浏览器进行一次重大更新,这次更新完全禁用了第三方 Cookie
,这意味着,默认情况下,各大广告商或网站将无法对你的个人隐私进行追踪。而微软和 Mozilla
等也纷纷采取了措施禁用第三方 Cookie
,但是由于这些浏览器市场份额较小,并没有给市场带来巨大的冲击。
从 2017
年截至 2019
年底, Google
面临的罚款总额已经超过 93 亿欧元,其中一大原因便是侵犯用户数据隐私。迫于巨大压力,Google Chrome
官方团队前不久也宣布,为了提升用户隐私和安全,未来两年将完全禁用第三方 Cookie
。
在完全不能写入三方 Cookie
的情况下,将会对前端的数据读写方式,甚至是整个广告行业带来巨大影响。
众所周知,HTTP
协议是无状态的协议,如果你在同一个客户端向服务器发送多次请求,服务器不会知道这些请求来自同一客户端。
这正是 HTTP
协议得以广泛应用的原因,试想一下,如果它是有状态协议,你必须要时刻与服务器建立链接,那么如果连接意外断开,整个会话就会丢失,重新连接之后一般需要从头开始;而如果是无状态协议,使得会话与连接本身独立起来,这样即使连接断开了,会话状态也不会受到严重伤害,保持会话也不需要保持连接本身。
如果 HTTP
协议只是用来访问静态文件,那不会有任何问题,但是如果你要为广大用户提供更好的服务,服务器就需要知道每个请求具体来自于哪个用户,比如你在逛淘宝的时候你只需要登录一次,当你发起一次购买请求,服务器就已经知道你登录过了,不会再让你进行登录。
所以 HTTP
协议需要占用浏览器的一小块存储,存储当前访问用户的一些
Chrome 51 开始,浏览器的 Cookie 新增加了一个SameSite
属性,用来防止 CSRF 攻击和用户追踪。
…
…
php设置samesite cookie,支持所有PHP版本。
PHP 7.3 的setcookie函数已经支持samesite属性,但对于7.3以下版本,可以用以下函数代替:
<?php $options = [ 'expires' => time()+18400, 'domain' => 'localhost', 'httponly' => false, 'samesite' => 'Lax', 'secure' => false, 'path' => '/' ]; function samesite_setcookie($name, $value, array $options) { $header = 'Set-Cookie:'; $header .= rawurlencode($name)…
近期评论