samesite不起作用是怎么回事?

发布于 2022-09-11 17:14:26 字数 912 浏览 29 评论 0

问题描述

想通过samesite防止csrf攻击,但是写了个demo,cookie始终能别拿到。

问题出现的环境背景及自己尝试过哪些方法

我启动了两个网站,端口分别是3001和3002,3001设置cookie,3002请求3001的服务。
3001的cookie设置了samesite为strict,但是3002发出的请求仍能拿到cookie。

相关代码

开发语言nodejs,框架express,chrome浏览器

// 3001代码

app.get("/main", (req, res) => {
  res.cookie("name", "wenmu", { sameSite: "strict" });
  res.set({ "Content-Type": "text/html" });
  res.sendFile("main.html", { root: __dirname });
});

app.get("/setVal", (req, res) => {
  console.log(req.headers.cookie);
  console.log(req.headers.referer);
  res.send([req.headers.referer, req.headers.cookie]);
});

app.listen(3001, () => {
  console.log("app start on port 3001");
});

//3002代码

<a href="http://localhost:3001/setVal">百元大奖</a>

期待的结果

点击“百元大奖”发出的请求,服务端接收到请求后不应该携带cookie。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

属性 2022-09-18 17:14:26

samesite并不遵循同源策略,而是Public Suffix List
所以不同端口号、不同子域名都被认为是同站

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文