核心结论
一次状态变更请求是否可信,不能由“携带登录态”“使用 POST”“通过 CORS”或“带有幂等键”中的任何单一条件决定。兼容跨站表单、旧客户端和自动重试时,应先区分调用方类型:浏览器会话请求使用合理的 SameSite、与会话绑定且不可预测的 CSRF 令牌、精确的 Origin 或 Referer 校验以及严格内容类型;旧客户端使用独立的显式认证凭证、时间窗口和防重放机制;重试通过绑定用户、操作和请求摘要的幂等键防止重复执行。高风险订单还要把金额、商品、收款方和当前步骤绑定到短时确认事务,并在必要时重新认证。
底层机制
CSRF 成立的关键是浏览器可能自动为目标站点携带会