我看到所有教程、指南在启用 https(SSL) 后都禁用了 spring boot 的默认 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 攻击。这是大多数现代应用程序(仅公开 API)对这些端点禁用 CSRF 的主要原因。
希望有帮助。