Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

cookie与domain #26

Open
lovelmh13 opened this issue Mar 24, 2020 · 1 comment
Open

cookie与domain #26

lovelmh13 opened this issue Mar 24, 2020 · 1 comment

Comments

@lovelmh13
Copy link
Owner

前方注意,我自己还是没太理解

有这样的问题不理解:

“根据网站B的请求,在用户不知情的情况下携带Cookie信息,向网站A发出请求。” cookie 不是同一个 domain 下才会携带吗?为啥 网站B 可以带着网站A的 cookie 请求 A 呢?

有人这么回答我:

Cookie 是跟着创建的时候的设置的 domain 走的啊,假设 domain 是 A,你即使在 B 里面嵌入 A 的地址,访问这个地址仍然会携带 Cookie 啊,所以浏览器才退出了 SameSite 属性来避免这个问题,设置 SameSite 属性就可以限制 Cookie 使用时的地址了。

可以看一下正确使用cookie中的domain

@lovelmh13
Copy link
Owner Author

lovelmh13 commented Mar 26, 2020

前方注意,我自己还是没太理解

有这样的问题不理解:

“根据网站B的请求,在用户不知情的情况下携带Cookie信息,向网站A发出请求。” cookie 不是同一个 domain 下才会携带吗?为啥 网站B 可以带着网站A的 cookie 请求 A 呢?

有人这么回答我:

Cookie 是跟着创建的时候的设置的 domain 走的啊,假设 domain 是 A,你即使在 B 里面嵌入 A 的地址,访问这个地址仍然会携带 Cookie 啊,所以浏览器才退出了 SameSite 属性来避免这个问题,设置 SameSite 属性就可以限制 Cookie 使用时的地址了。

可以看一下正确使用cookie中的domain

补充一下后面的回答:

domain 是由服务端设置的,这个 domain 和当前浏览器的 url 是没有关系的,是指代请求地址的域名,例如 https://api.com/update 这个接口可以设置 Cookie 在 api.com 这个 domain 下面。但是并不妨碍你在你的 https://web.com 网站里面使用这个接口,使用的时候,因为你这个接口仍然是发给 api.com 的,所以当然要把 api.com 下的 Cookie 带上。但是这就如文章中所说,给了 CSRF 可乘之机,所以又加上了 SameSite 属性。SameSite 属性就是用来限制当前页面的 url 的 domain 要和 Cookie 的 domain 同源(也有其他的设置,这是最严格模式)。这样就杜绝了 CSRF。

这个回答是来自:CSRF攻击与防御(写得非常好) 我的提问的

还有一篇讲了SameSite属性、跨站、跨域 浏览器同源的区别,非常好 预测最近面试会考 Cookie 的 SameSite 属性


补充于 2021-6-9

同一站点 same-site

同一站点是指协议一样,根域名一样的 url。不同的子域名和不同的端口号是被允许的。(http + domainname.com * /login || name)

例如:

https://time.geekbang.org
https://www.geekbang.org
https://www.geekbang.org:8080

它们都是属于同一站点,因为它们的协议都是 HTTPS,而且根域名也都是 geekbang.org(或许叫 二级域名+顶级域名更合适)。

当浏览器从一页打开了新的一页,新的一页与之前那页属于同一站点,那么就会使用同一个渲染进程。也就是说其中一个页签卡住了,同一站点的其他页签也会卡住。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant