小程序接口使用时,HttpOnly cookie 中的 sameSite 设置什么最合适
sameSite: 'lax'
是设置 Cookie 的一个安全属性,用来防止 跨站请求伪造(CSRF)攻击。它是 SameSite
的三种取值之一。
SameSite
的三种取值含义:
值 | 含义 | 使用场景 |
---|---|---|
Strict | 最严格,完全禁止第三方请求携带 Cookie(包括点击链接跳转) | 极高安全场景,但用户体验差 |
Lax | 较宽松,GET 导航(如链接点击)会携带 Cookie,POST、AJAX 不会 | 大多数情况默认选择 |
None | 允许所有第三方请求携带 Cookie,但 必须加上 secure: true | 需要在跨站点 iframe 或跨域接口中使用 cookie |
举个例子说明 lax
你的网站是 yourdomain.com
,微信小程序发起一个请求到 yourdomain.com/wxmp/userInfo
:
- 如果 Cookie 设置了
SameSite: 'lax'
:- 用户从浏览器点击一个链接跳到你的网站,Cookie 会带上;
- 但如果是某些跨站 POST 或 JS 发起的请求(比如其他网站伪装发请求),Cookie 不会带上 → 这样就防止了 CSRF 攻击。
推荐
- 如果是小程序发请求(同域 API 调用),使用
lax
是比较平衡的选择; - 如果你需要允许跨站调用并带上 Cookie,就用
None
,但必须配合secure: true
(也就是必须是 HTTPS); - 如果你只想让用户点击进入你站点才带 cookie,并最大程度防御 CSRF,用
Strict
。
需要我帮你选一个最合适你项目的小程序场景的配置吗?