我们有一个产品依赖于安装在用户机器上的瘦客户端。我们向指向具有真正 ssl 的本地主机的域发出 ajax get 请求。这在边缘失败,适用于包括 IE11 在内的所有其他浏览器。请注意,如果不涉及 ssl,同样有效。它也适用于 Windows 10 家庭版。
添加数据类型、内容类型或请求方法并不能解决这个问题。解决此问题的唯一方法似乎是运行以下命令。
CheckNetIsolation LoopbackExempt -a -n="Microsoft.MicrosoftEdge_8wekyb3d8bbwe"
如果这是预期的行为,有人可以解释为什么微软会在企业版上阻止它,但它适用于家庭版吗?
最佳答案
Microsoft Edge 和 Windows 10 应用程序一般使用 AppContainer Isolation :
您的瘦客户端在 win10 企业边缘上针对 intranet
ssl 服务 (localhost) 运行,因此默认情况下访问受此机制限制。随着命令
CheckNetIsolation LoopbackExempt -a -n="Microsoft.MicrosoftEdge_8wekyb3d8bbwe"
您正在为 MS Edge 的环回网络适配器 (localhost) 在该主机上禁用网络隔离,以便您的应用程序客户端(和任何其他本地来源的应用程序)可以在其上运行,而不受任何本地主机服务的限制。
这在边缘失败,适用于包括 IE11 在内的所有其他浏览器。
他们显然想改进以前版本的默认安全策略。永远不会太晚,MS :) 实际上有一个 Enhanced Protected Mode (EPM) 也可以阻止您的应用程序在 IE 上运行。 Chrome 有它的 Google Chrome Sandbox 也可以这样调整。 Safari 和 Firefox 也有沙盒功能,尽管我不熟悉它们的特殊性。
请注意,如果不涉及 ssl,同样有效。
通常,如果您使用 ssl 是因为您正在处理敏感数据和/或关键服务。如果你不是,可以更松懈。同样,这只是安全策略的问题。
它也适用于 Windows 10 家庭版。如果这是预期的行为,有人可以解释为什么微软会在企业版上阻止它,但它适用于家庭版吗?
众所周知,任何产品的企业版本都更具限制性,因为它们的目标用户更关心安全(IT 人员通常不希望将公司的内部网工资单数据库服务暴露给外部攻击者,等等)。此外,在这种情况下,IT 部门的专家可以轻松定义/更改默认行为(查看 domain security policies ),因此最好将默认设置保留为“偏执”模式,并让专家根据公司的需求进行调整。
请注意,当您在浏览器上运行瘦客户端时,还有其他机制在起作用,使这种保护变得多余(相同的域策略、XSS 保护等)。然而,永远都不会太安全:有一些方法可以解决诸如 Self-XSS 之类的需要在浏览器和本地网络之间进行隔离以避免损害系统的防御。最后,更少的暴露表面意味着更少的攻击媒介,所以如果你能负担得起,隔离是好的:)
关于ajax - 边缘 AJAX 调用失败到 SSL 指向本地主机的域,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43701012/