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

时间:2016-12-27 04:08:41

标签: api security spring-security csrf csrf-protection

Spring Security Documentation表示

  

18.3何时使用CSRF保护

     

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

但显然有些情况允许,但是当你没有时,例如当你有一个未加密的通信(即没有SSL)时。我想更多地了解您仍然希望使用CSRF保护的情况。

1 个答案:

答案 0 :(得分:2)

背景

实质上,CSRF围绕恶意网站,网络钓鱼电子邮件,第三方程序或此类性质的东西,试图让受害者的网络浏览器(即Chrome)做一些他们不希望做的事情。

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

然后,您会收到一封很酷的电子邮件,说明您可以点击此链接赢取大量金币。用户点击该链接并突然将所有他的所有物品转移到恶意用户的帐户而不知道,只需通过一个简单的HTTP请求。 : - (

保护方法(适用于Web服务[无UI])

现在,在许多情况下,Web应用程序使用:

  • 反CSRF令牌
  • 验证码
  • 重新验证(将用户注销)

然而,对于REST服务,案例略有变化。您需要使用自定义请求标头,例如 -

X-Requested-With

背后的原因如下(引用OWASP' article高度推荐阅读) -

"此防御依赖于同源策略(SOP)限制,只有JavaScript才能用于添加自定义标头,并且仅在其原点内。默认情况下,浏览器不允许JavaScript发出跨域请求。"

资源

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