首页 文章

跨站点请求伪造(XSRF)保护AngularJS

提问于
浏览
0

我们的AngularJS应用程序位于 site.com ,我们的api托管在 api.site.com ,后端由ASP.NET Web API编写,显然应该在 site.comapi.site.com 之间启用CORS,here中的文档说:

XSRF是一种攻击技术,攻击者可以通过该技术欺骗经过身份验证的用户在网站上无意中执行操作 . AngularJS提供了一种对抗XSRF的机制 . 执行XHR请求时,$ http服务从cookie(默认情况下为XSRF-TOKEN)读取令牌并将其设置为HTTP头(X-XSRF-TOKEN) . 由于只有在您的域上运行的JavaScript才能读取Cookie,因此您的服务器可以确保XHR来自您域上运行的JavaScript . 不会为跨域请求设置标头 .

我在文档中说的最后一行加粗了,为我的应用程序启用CSRF保护在这种情况下无用吗?或者我的应用程序是否免受此类攻击?

1 回答

  • 2

    回答你的问题:

    在这种情况下,为我的应用程序启用CSRF保护是否无用?

    不会 . 文档只是告诉您AngularJS有助于您更轻松地实现CSRF保护,并且您有责任在AngularJS的XSRF功能的帮助下完成实施 .

    我的应用程序是否免受此类攻击?

    实际上,AngularJS使用cookie-to-header预防方法,如果你不小心的话,这并不是完全可靠的!有关更多信息,请访问here .

    总而言之,文档只是告诉您客户端实现是为您处理的 . 您需要执行以下部分:

    • 创建CSRF令牌(确保猜测它是's random and can')并在登录期间将其与用户会话相关联

    • 断言所有对API的传入请求都有 X-XSRF-TOKEN 标头,并且标头的值是与用户会话关联的标记

    是的,请确保您启用同源政策 .

相关问题