5月30日 21:29
SameSite Cookie 为什么能防止 CSRF?实际配置怎么写?
SameSite Cookie 能防止 CSRF,是因为它把“跨站请求是否携带 Cookie”的决定权交给浏览器。攻击者可以在自己的网站里放自动提交表单或隐藏图片,请求你的站点;但如果浏览器因为 SameSite 策略不发送登录 Cookie,服务端就无法把这次请求识别成已登录用户操作。
追问
SameSite 防的是哪类 CSRF?
它主要防攻击者借浏览器自动带 Cookie 发起的跨站状态修改请求,比如隐藏表单 POST、图片触发 GET 副作用等。
Lax 为什么适合作默认值?
Strict 会让外部跳转进入站点时也不带 Cookie,体验较差。Lax 保留顶级 GET 导航登录体验,同时拦住更危险的跨站提交。
哪些 Cookie 可以设置 None?
只有确实需要跨站发送的 Cookie 才应该设置 None,比如第三方登录状态、嵌入式组件或跨站 SSO 临时票据。
SameSite 和 CORS 是一回事吗?
不是。CORS 决定前端脚本能否读取跨源响应,SameSite 决定跨站请求是否携带 Cookie。
写段配置
httpSet-Cookie: session=abc; Secure; HttpOnly; SameSite=Lax; Path=/