【问题标题】:Can I use a resource over CORS without exposing the contents of that resource?我可以通过 CORS 使用资源而不暴露该资源的内容吗?
【发布时间】:2018-09-06 23:18:53
【问题描述】:

假设我想通过 CORS 访问另一个域上的 CSS 文件。

如果我拥有提供 CSS 文件的服务器,是否可以允许域获取 CSS 文件并将其应用到他们的页面,同时隐藏 CSS 文件的实际内容/不暴露 CSS 文件的代码?

【问题讨论】:

  • 作为一般规则,如果您希望浏览器能够使用某些内容,您需要让用户也能够看到该内容。
  • 如果浏览器可以使用它,任何人都可以看到它 - 不确定问题中的两个段落是如何相关的

标签: javascript css cors web-development-server


【解决方案1】:

是否可以允许域获取 CSS 文件并将其应用到他们的页面

您通常可以从其他来源加载 CSS 文件,而无需指定 CORS 标头。

同时隐藏 CSS 文件的实际内容/不暴露 CSS 文件的代码?

取决于你的意思。除非您设置 CORS 标头,否则他们将无法将文件作为文本读取。然而,他们将能够通过 JavaScript 在页面上检查应用于元素的样式。

【讨论】:

  • 啊,我明白了。所以你是说默认情况下 JS 和 HTML 文件只能通过同源调用访问,而 CSS 文件通常对公众开放?有没有办法使用 CORS 来保护这些 CSS 文件不被公开?您将使用什么标头公开 CSS 文件文本?
  • @SamSebree 通常您可以正常跨域加载 JS、CSS、HTML、图像等。但是你不能通过 JavaScript 直接访问他们的数据。
  • 是否可以托管图像资源,并通过 CORS 公开该图像资源但隐藏其元数据(例如分辨率)?
  • @SamSebree 如果可以加载图像,您可以轻松找到显示宽度/高度跨域。
  • 即使在 CSS 文件托管在服务器上并通过 CORS 公开但未应用于可公开访问的网页的情况下,所有这些原则是否都适用?
【解决方案2】:

CSS 在前端上运行。因此,网站上运行的所有 CSS 代码(包括通过 <link> 标签外部引用的 CSS)在网站上始终是 public没有方法可以隐藏 CSS 代码(除了混淆,这将毫无意义)。

CORS 请求是通过 JavaScript 发出的,它也在客户端运行。因此,如果不暴露该端点,就不可能发出 CORS 请求 - 您可以简单地监控网络跟踪以找​​出哪些端点受到攻击,以及哪些数据正在传递给它们。

【讨论】:

  • 即使在 CSS 文件托管在服务器上并通过 CORS 公开但未应用于可访问网页的情况下也是如此吗?
猜你喜欢
  • 2019-05-25
  • 2010-10-09
  • 1970-01-01
  • 2018-12-05
  • 2015-08-31
  • 1970-01-01
  • 1970-01-01
  • 2017-06-07
  • 1970-01-01
相关资源
最近更新 更多