在 spring 引导中禁用 CSRF 的原因

Reason to disable CSRF in spring boot

我看到所有教程、指南都在启用 https(SSL) 后禁用 spring 引导的默认 csrf?

我们不需要默认的 CSRF 吗? 启用 SSL 将处理 csrf?

我很困惑为什么我们在 spring 应用中禁用默认 csrf?

当您提交的 Web 表单容易在同一浏览器的其他选项卡中出现“跨站点请求”时,就需要 CSRF。这些应用程序通常使用模板引擎(如 velocity、JSF、thymeleaf 等)在服务器端生成整个 HTML。

然而,现代应用程序主要依赖于 REST API 端点(而不是过去用于发出 HTML 的传统控制器)。这些端点主要用于消耗和生成 JSON。这些 API 的预期消费者是移动应用程序、Web 框架(如 reactjs、angularjs 或类似的)或其他 b2b 应用程序。这些 API 大多是无状态的,不依赖于服务器端会话或浏览器 cookie。根据 CSRF 的解释,其中一个条件不再相关(基于 Cookie 的会话处理),因此这些 API 不容易受到 CSRF 攻击。这是大多数现代应用程序(仅公开 APIs)禁用这些端点的 CSRF 的主要原因。

希望对您有所帮助。