JavaScript 可以安全地从不受信任的域中获取数据吗?

Can JavaScript safely fetch data from untrusted domains?

我的网页需要以客户端启动的方式从可能(有时**)为 untrusted/attacker-controlled.

的域中获取数据

JavaScript 是否允许从不受信任或攻击者控制的域中[安全] 获取数据*?

如果有,这是什么功能?


澄清/附录/"inb4"s/P.S.:

*数据提取 protocol/format 尚未 [尚未] 定义;甚至不及 HTTP GET 与 POST。 我对数据格式没有偏好,可以选择+将其实现为required/appropriate,甚至包括plaintext/delimited格式。 没有使用要求JSON.

**技术上,域(可能是 arbitrary/user-defined!)有时必须通过 HTTP 加载;这种威胁模型与从敌对服务器获取数据是同构的,尤其是在漫游非 VPN 网络连接的情况下。 (而且,是的,之后对所述不受信任数据的安全处理超出了这个问题的范围)

XY Problem "X":这里的驱动项目是一个网络浏览器 homepage/app,它将加载内容(从首选项和琐碎的小部件到完全 content) 来自可能由用户控制并且可能(由用户选择)驻留在甚至非 ICANN 域(例如本地域、OpenNIC 域等)上的来源。它完全在范围内并且 expected/acceptable 其中一些内容将仅通过 TLS 提供,并且可能用于多种目的,从 "canaries"(MITM 存在和单纯的网络配置检查)到完全特定于位置的数据。由于上述一系列原因[域未预定义],TLS 连接可能可用也可能不可用;即使在这种情况下,仍有 must/ought/will 加载的内容。

不是 #29022794 的副本。我没有使用 JQuery 的要求,这个问题只询问 $.getJSON() 是否可以安全地用于不受信任的 URL(其中,a. 它似乎不是 ; 和 b. 即使是,这个问题也是询问 底层函数[JQuery 正在调用],而不是询问如何使用 JQuery 本身)。

没有。由于 CORS 安全保护,您不能在浏览器中执行此操作。如果您发现了一个错误,那么浏览器会修复它。

但是,您可以在服务器端使用 fetch API

情况下 是:XMLHttpRequest 似乎 可以安全地调用不受信任的域。

理由:

参见OWASP's page on AJAX vulnerabilities

  • 没有提及 客户端 由 [这种] 恶意制作的服务器响应构成的威胁;列出的唯一客户端风险是 注入 一种或另一种。

另见 this similar question on Security Stack Exchange

  • OP 的问题( 解析 XMLHttpRequest 到攻击者控制的服务器是否安全 JSON)必然假设 是安全的]收到这样的
  • 两位用户就此问题发表了多次评论,讨论了解析所述响应的含义,并且从未质疑这一基本假设,仅评论了与那些相似的 XSS 注入攻击由 OWASP 讨论。
    • ThoriumBR(>5 岁成员,99.8% 2019 Information Security Stack Exchange 用户)
    • Ry(>8 岁成员,Stack Overflow 版主)

虽然很难“证明”否定,尤其是在安全问题上,但事实上 海洋 在线内容讨论 解析所涉及的风险 潜在的恶意响应(XSS 注入预防),处理此类服务器的风险(CORS)等;显然,甚至没有关于此的 废料 讨论,意味着它可能不是风险之一。