【发布时间】:2022-11-09 17:47:37
【问题描述】:
laravel 等框架要求您将 csrf 令牌放在 HTML 表单中。
然而与此同时,laravel 默认带有 VerifyCsrfToken 中间件,它会在每个响应上自动创建一个带有 csrf 令牌的 X-XSRF-TOKEN cookie。此 cookie 用于 ajax 请求,例如 automatically added 到 axios 的标头。
我想知道为什么需要将 csrf 令牌添加到每个 HTML 表单。为什么不能只使用已经存在的X-XSRF-TOKEN cookie 来验证 csrf 令牌。我知道存在相同站点 cookie 的问题,如果您的 csrf cookie 设置为 lax 或 none,如果他们将 POST 到我的站点,cookie 将从外部站点发送。然而,这个问题可以通过将同一站点设置为strict 来解决,那么就不需要在每个表单上都设置 csrf 令牌,这有点烦人。
关于为什么我们不能使用strict cookie 来验证 csrf 令牌,我是否缺少一些安全问题?
【问题讨论】:
标签: laravel security cookies csrf csrf-token