对于仅使用JSON的后端REST应用程序,CSRF是强制性的吗?

Ada*_*ion 7 security rest spring csrf

许多资源声称(source1中)(源2)

对于RESTful Web服务公开的资源,确保任何PUT,POST和DELETE请求免受跨站点请求伪造的影响非常重要.

所有应用程序都必须使用CSRF,而对Web安全性的关注度最低

然而,Spring Security文档说:

对普通用户可以由浏览器处理的任何请求使用CSRF保护.如果您只创建非浏览器客户端使用服务,则可能需要禁用CSRF保护.

那么,是否可以为应用程序禁用CSRF?

  • 仅公开REST API
  • 仅使用JSON(检查请求Content-Type标头)

zde*_*ine 3

这取决于您的 API 的客户端。CSRF 攻击的基础是客户端在 HTTP 请求中自动发送所请求 URL 的 cookie(授权)。如果您的客户端没有这样做(通常浏览器会自动这样做),那么您应该没问题。

原因是:如果您的 API 使用者未通过 cookie(由浏览器自动存储)在您的应用程序中进行身份验证/授权,攻击者无法使用任何其他网页进行成功的 CSRF 攻击(从其他页面发送带有 cookie 的 HTTP 请求)来自浏览器的 API)。

换句话说,我无法想象你的API客户端会以某种方式编写,它可以向你的API发送请求,存储cookie(你的身份验证),并且还可以以某种方式向你显示一些“愚蠢”用户交互的内容 - 发送使用先前 API 请求中的 cookie(您的身份验证)向您的 API 发出请求。