何时或何时不在API中使用CSRF?

何时或何时不在API中使用CSRF?,api,security,spring-security,csrf,csrf-protection,Api,Security,Spring Security,Csrf,Csrf Protection,声明 18.3何时使用CSRF保护 什么时候应该使用CSRF保护?我们建议使用CSRF 保护浏览器可以通过以下方式处理的任何请求: 普通用户。如果您仅创建由使用的服务 非浏览器客户端,您可能希望禁用CSRF保护 但很明显,当您没有加密通信(即没有SSL)时,它允许一些场景。我想了解更多关于您仍然希望在哪些场景中使用CSRF保护的信息。Background 本质上,CSRF围绕恶意网站、钓鱼电子邮件、第三方程序或此类性质的东西,试图让受害者的web浏览器(即Chrome)做他们不想做的事情 例如,

声明

18.3何时使用CSRF保护

什么时候应该使用CSRF保护?我们建议使用CSRF 保护浏览器可以通过以下方式处理的任何请求: 普通用户。如果您仅创建由使用的服务 非浏览器客户端,您可能希望禁用CSRF保护

但很明显,当您没有加密通信(即没有SSL)时,它允许一些场景。我想了解更多关于您仍然希望在哪些场景中使用CSRF保护的信息。

Background 本质上,CSRF围绕恶意网站、钓鱼电子邮件、第三方程序或此类性质的东西,试图让受害者的web浏览器(即Chrome)做他们不想做的事情

例如,你玩一个名为
X
的视频游戏,作为一名玩家,它允许你拥有一定数量的货币,你可以购买、出售和与其他玩家交易

然后你会收到一封很酷的电子邮件,说你可以通过点击这个链接赢得很多金牌。用户单击链接,突然将其所有财产转移到恶意用户的帐户,而不知道,这一切都是通过一个简单的
HTTP
请求完成的:-(


保护方法(用于Web服务[无UI]) 现在,在许多情况下,web应用程序利用:

  • 反CSRF令牌
  • 验证码
  • 重新身份验证(注销用户)
但是,对于REST服务,情况会略有变化。您需要使用自定义请求头,例如-

X-request-With

其背后的原因如下(引用我高度推荐阅读的OWASP)——

此防御依赖于同一来源策略(SOP)限制,即只有JavaScript可以用于添加自定义标头,并且只能在其来源中使用。默认情况下,浏览器不允许JavaScript进行跨来源请求


资源 我列出了一些你可能想浏览的资源。CSRF是一个非常有趣的漏洞,它将安全缺陷与社会工程联系起来。希望你会发现它们有用

  • Acunetix CSRF示例和保护-
  • OWASP CSRF条款-
  • OWASP CSRF预防备忘单(重要)-

我提供的答案是否回答了您的问题?是的,您回答了。非常感谢您的详细回答:)