【问题标题】:Is Access-Control-Allow-Origin sufficient in preventing XSRF attacks?Access-Control-Allow-Origin 是否足以防止 XSRF 攻击?
【发布时间】:2014-12-17 17:17:03
【问题描述】:

我们正在构建一个带有在 JBoss 中运行的 Java Spring/Hibernate 后端的应用。前端是 AngularJS。

我们还没有在服务器端设置 XSRF 令牌。我们也没有(无论如何还没有)要求允许其他域访问我们的网络资源。

我想我会尝试查看我们的网站是否容易受到 XSRF 攻击,因此我设置了一个恶意 web 应用程序,以使用 Angular 的 $http.post() 发布到我们真实应用程序的 URL 之一。我登录了真正的应用程序,然后尝试从恶意应用程序发帖。

在浏览器中我收到 401 响应并看到错误:

XMLHttpRequest cannot load http://localhost:8080/user/delete. No
'Access-Control-Allow-Origin' header is present on the requested resource.
Origin 'http://localhost:6543' is therefore not allowed access. The response
had HTTP status code 401.

服务器端未设置在响应上设置 Access-Control-Allow-Origin,因此出现上述错误。

所以我的问题是,仅仅从响应标头中省略 Access-Control-Allow-Origin 是否足以防止 XSRF 攻击?

即使没有设置 Access-Control-Allow-Origin,我是否仍然可以对我的网站进行 XSRF 攻击?如果有怎么办?我想演示一下这个攻击。

谢谢。

【问题讨论】:

    标签: java angularjs spring security csrf


    【解决方案1】:

    不,这还不够。即使浏览器给出'Access-Control-Allow-Origin' 错误,请求仍然是由浏览器发出的。如果攻击页面指定withCredentials

    $http.post(url, {withCredentials: true, ...})
    

    然后这个请求将与受害者的身份验证cookie一起发送到您的域,这意味着对http://www.example.com:8080/user/delete的请求将成功。

    此外,此请求也可以在不使用 XHR 的情况下使用标准 HTML 表单进行:

    <form method="post" action="http://www.example.com:8080/user/delete">
    

    而 JavaScript 将仅用于提交表单,而不是自己发出请求。

    保护您的系统免受 CSRF 影响的一种简单方法是检查自定义标头,例如 X-Requested-WithOrigin 标头。 X-Requested-With 不能在不启用 CORS 服务器端的情况下跨域发送。然而,Synchronizer Token Pattern 仍然是最强大的 CSRF 预防方法,因为它不受浏览器插件中的缺陷的影响,例如 previous flaw in Flash 允许发送通常无法从浏览器发送的标头。

    【讨论】:

    • 我可能说得太早了。将“withCredentials”设置为 true 无效。我还修改了 $httpProvider.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest' 与 'withCredentials' 的组合,但我无法想出使请求成功的变体。跨度>
    • @lostdorje:确保您在浏览器中启用了第 3 方 cookie,并且您可以验证是否使用拦截代理发送 cookie(一些开发工具实际上不会显示 cookie,因为同源政策)。我answered a very similar question the other day,但是这是从攻击者的角度来看的。
    猜你喜欢
    • 2016-10-22
    • 1970-01-01
    • 2017-06-15
    • 2016-09-30
    • 2015-06-17
    • 2021-12-27
    • 2017-12-29
    • 2013-10-27
    • 2018-07-18
    相关资源
    最近更新 更多