【问题标题】:What's the point of CORS if apps need it to allow any origin?如果应用程序需要它来允许任何来源,那么 CORS 有什么意义呢?
【发布时间】:2022-11-17 12:44:56
【问题描述】:

我并不是说这是一个否定的问题,但我正在构建一个移动应用程序和一个 Web 服务器来托管移动应用程序的内容,并且我正在尝试实施负责任的安全性。

在开发过程中,我遇到了臭名昭著的 CORS 问题。

根据我在 CORS 和移动应用程序上可以找到的所有信息,似乎唯一要做的就是设置访问控制允许来源至 *。

那么,如果是这样的话,CORS 设置的意义何在? 这意味着来自任何服务器/域的任何人都可以尝试对我的服务器发出请求?

我的服务器 api 将需要身份验证和特定的客户端标头值,但我觉得在这种情况下 CORS 设置毫无意义,但与此同时,如果不设置它,我的应用程序将无法与我的服务器通信。

这个对吗?

【问题讨论】:

    标签: c# .net mobile cors


    【解决方案1】:

    CORS 旨在阻止人们在浏览器上下文中代表他人发出请求。

    就像你登录到站点 A,然后在你的浏览器中设置一个 auth cookie,然后当你访问恶意站点 B 时,它可以向站点 A 发出相同的请求。浏览器会很乐意将你的站点 A 的 cookie 与请求一起传递,但是响应将是站点 B 上的脚本。

    这里一个好的 CORS 设置应该是 Access-Control-Allow-Origin: https://site-a.com 这样的东西,它可以阻止站点 B 欺骗您的浏览器发出请求。许多网站忽略了这一点,只是将其设置为 *,这基本上使它变得毫无价值。

    不过,它仅适用于浏览器,我总是可以使用 CURL 或任何其他工具向您的端点发出一个简单的请求,而忽略 CORS。

    您可以在MDN 阅读更多相关信息(您应该这样做,因为这是一个非常重要的主题,但很多人都弄错了)。

    至于您的移动应用程序,我认为将其设置为 * 不会有问题,除非您从基于浏览器的站点使用相同的 API(这会使它变得脆弱)。

    【讨论】:

    • 我了解 CORS 的预期好处,这就是我询问移动应用程序的原因。如果我是否从浏览器使用相同的 API,为什么它会改变任何东西?这如何使它更安全或更不安全?
    • 如果您从浏览器使用相同的 API,那么允许该 API 的所有来源可能会为 XSS 攻击打开它(如上所述)。它仍然不会影响您的应用程序,因为它不会与浏览器共享其 cookie 和其他内容。
    猜你喜欢
    • 2020-01-04
    • 2016-01-21
    • 1970-01-01
    • 2010-11-28
    • 2018-01-14
    • 1970-01-01
    • 1970-01-01
    • 2021-04-28
    • 1970-01-01
    相关资源
    最近更新 更多