欢迎访问 内存溢出 —— 独立后端与系统工程技术博客

专注于分布式系统、Linux内核、数据库存储与后端工程实践

跨站请求伪造(CSRF)机制演进与 SameSite Cookie 防护

发表于:|最后更新:|分类:安全与运维|阅读:873 次

跨站请求伪造(Cross-Site Request Forgery, CSRF)是一种经典的 Web 攻击模式。当受害者在受信任站点 A 完成登录并在浏览器本地保留了身份凭证(Cookie)后,若诱骗受害者访问恶意站点 B,恶意网页可以通过表单提交(Form POST)或图片标签()悄悄向站点 A 发送跨域敏感请求。由于浏览器的历史兼容性设计,任何跨域请求默认会自动携带目标站点的所有本地 Cookie,导致站点 A 的后端服务器误以为该操作是受害者本人发起的合法行为。早期业界采用的防御策略包括:CSRF Token:服务端下发一个随机生成的密文字符串并挂载至表单隐藏域。第三方恶意网站在发起跨站请求时无法读写该 Token,使得服务端校验失败。双重 Cookie 验证(Double Submit Cookie):利用 JavaScript 获取 Cookie 并将其写入自定义请求头,恶意站点受限于同源策略无法构造该头信息。Google 推出的 SameSite Cookie 属性从根源上重塑了这一规则。SameSite=Strict:最为严格,完全禁止第三方站点发起的任何跨域请求携带该 Cookie。SameSite=Lax:现代浏览器(如 Chrome)的默认策略。仅在顶层上下文导航(顶级 URL 变更,如点击 标签链接)且属于安全 HTTP 动词(GET)时允许携带,彻底阻断了隐式 POST 跨站伪造。SameSite=None; Secure:显式声明支持跨域携带,必须强制绑定 HTTPS 加密信道。