用途:防止 Web 应用遭受跨站请求伪造(CSRF)攻击。适用于实现会改变状态的表单、供浏览器调用的 API、设置会话 Cookie、审查认证流程,以及任何 POST/PUT/DELETE 等状态变更请求。
主要能力:介绍 CSRF 攻击原理,并给出多种防护方法。1)SameSite Cookie 作为首要防线,可选 Strict、Lax、None(None 需 Secure)。2)CSRF Token 作为纵深防御,示例使用 csurf 中间件,在表单中放置隐藏字段 _csrf,由中间件自动校验。3)双重提交 Cookie 模式,生成随机 Token 同时写入 Cookie 与表单,服务端用 timingSafeEqual 比较两者。4)自定义请求头校验,要求 X-Requested-With: XMLHttpRequest 等跨域无法设置的请求头。5)Origin/Referer 校验,比对允许的来源列表。
使用方式:资料给出 Express 会话配置、csurf 中间件、双重提交校验、请求头校验与 Origin 校验的代码示例;并分别说明 React(fetch 包装器读取 meta 或 Cookie 中的 Token)、Django(默认启用 CsrfViewMiddleware,模板用 {% csrf_token %},AJAX 用 X-CSRFToken)、Rails(protect_from_forgery,form_with 自动包含 Token)、Laravel(@csrf,meta 标签配合 X-CSRF-TOKEN)的集成方式。
适用场景:表单提交、浏览器调用的 API、会话 Cookie 设置、认证流程审查、敏感操作防护。
限制与注意事项:资料列出常见错误,如把 Token 放在 URL、在 GET 请求中改变状态、从 query 接受 Token、随意使用 SameSite=None、登录后不重新生成 Token。测试部分提供跨域测试页示例,代码审查清单涵盖 SameSite 属性、Token 校验与再生成、GET 不改状态、Origin/Referer 校验、CORS 配置与自定义请求头。具体框架版本、依赖安装命令及完整部署细节暂未提供。