Cookie 的 SameSite 属性

当需要iframe跨站嵌入引用时,如果需要传递Cookie,则离不开SameSite 属性。

SameSite 属性有三个值,分别是:

1、Strict 仅容许一方请求携带 Cookie,即浏览器将只发送相同站点请求的 Cookie,即当前网页 URL 与请求目标 URL 彻底一致。
2、Lax 容许部分第三方请求携带 Cookie
3、None 不管是否跨站都会发送 Cookie

现在高版本的浏览器会默认将SameSite的默认值设置为Lax,来提高防护网站的CSRF攻击。

但针对业务系统需要允许跨站传递发送Cookie时,需要将SameSite设置为None,且一定要带上Secure属性。

可以通过修改Nginx配置,

location / {
    proxy_set_header   Host $host;
    proxy_set_header   X-Real-IP $remote_addr;
    proxy_set_header   X-Request-ID $global_request_id;
    proxy_set_header   X-Forwarded-Proto $scheme;
    proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_cookie_path / "/; secure; HttpOnly; SameSite=None";
    proxy_pass http://127.0.0.1:8080
}

(/; secure; HttpOnly; SameSite=None)解释:

Path /

  指定了一个 URL 路径,这个路径必须出现要请求的资源的路径中才能够发送 Cookie 首部。好比设置 Path=/docs,/docs/Web/ 下的资源会带 Cookie 首部,/test 则不会携带 Cookie 首部。

  Domain 和 Path 标识共同定义了 Cookie 的做用域:即 Cookie 应该发送给哪些 URL。

Secure属性

  标记为 Secure 的 Cookie 只应经过被HTTPS协议加密过的请求发送给服务端。使用 HTTPS 安全协议,能够保护 Cookie 在浏览器和 Web 服务器间的传输过程当中不被窃取和篡改。

HTTPOnly

  设置 HTTPOnly 属性能够防止客户端脚本经过 document.cookie 等方式访问 Cookie,有助于避免 XSS 攻击。

posted @ 2025-08-05 10:06  Commissar-Xia  阅读(258)  评论(0)    收藏  举报