【问题标题】:Windows mobile native application do have CSRF?Windows 移动原生应用程序有 CSRF 吗?
【发布时间】:2017-10-13 02:52:19
【问题描述】:

我开发了一个 Windows 移动应用程序,它连接回我托管在 Internet 上的 Web 服务以与服务器数据同步。

我没有对移动应用程序的CSRF进行任何控制,是否需要对本机应用程序进行CSRF保护?如果是,为什么?

** 我的应用程序是本机应用程序,不在网络浏览器上。

【问题讨论】:

    标签: mobile csrf


    【解决方案1】:

    是否需要对原生应用程序进行 CSRF 保护?

    不,如果您的移动应用程序是唯一的消费者类型(例如,没有 Web 浏览器)并且您的移动应用程序不向其他域发出 Web 请求,那么根据定义,CSRF 是不可能的,因为没有跨站点请求来伪造。

    【讨论】:

      【解决方案2】:

      CSRF 保护将在 Web 服务器端,而不是应用程序,尽管您可以通过在登录时从服务器设置 cookie 并将该 cookie 添加到来自本机应用程序的请求的标头来帮助自己。

      【讨论】:

      • 非常感谢@Jim B 的及时回答。我正在使用 Jtoken 进行登录管理。除此之外,我还需要使用 CSRF 令牌吗?
      【解决方案3】:

      您的应用程序很可能需要具有 CSRF 意识(如果您已在后端实施保护)。

      例如,一般的最佳做法是为每个请求提供一个令牌,该令牌将用于下一个请求,以确保不会发出重复的请求。您的移动应用需要能够获取和使用此令牌(同样,假设您已在服务器端实现此功能)。

      【讨论】:

        【解决方案4】:

        这实际上取决于您的网站是否可以被人访问和/或您用于网站的身份验证方法。

        如果用户可以通过浏览器以任何方式登录到托管您的网络服务的网站,那么当用户登录到该网站时,答案是肯定的,因为 CSRF 利用浏览器会在与网站通信时发送会话和其他 cookie 的事实,因为浏览器会为所有针对同一来源的请求自动添加 cookie,而不管是哪个网站发送它们。

        如果您的 Web 服务可以通过 NT 身份验证直接访问,那么只要您登录到网络,答案是肯定的。原因是使用恶意 JavaScript 的攻击网站仍然以您的身份访问 Web 服务,无论哪个网站发送请求。

        最后,如果绝对没有办法通过浏览器登录网站并且您没有使用 NT 身份验证,SilverlightFox 的回答是正确的。原因是该站点永远不会有 Session cookie,所以当 CSRF 攻击发生时,没有什么可以发送。

        解决方法:

        对于网络,这是通过防伪令牌修复的,该令牌与 put 和 post 动词一起发回(尽管您可以使用所有动词来做到这一点)。恶意网站可能会尝试发送请求,并且肯定会获取您的会话 cookie,但 put/post 中缺少防伪令牌会导致它失败。

        对于移动设备,上面的 patwhite 提出了一个修复方案,但由于处理问题的策略不同,因此移动设备与 Web 需要不同的 Web 服务端点。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2017-12-10
          • 1970-01-01
          • 1970-01-01
          • 2021-03-09
          • 1970-01-01
          • 1970-01-01
          • 2017-06-11
          • 1970-01-01
          相关资源
          最近更新 更多