【问题标题】:HTTPS Site: Load an external CSS over HTTPHTTPS 站点:通过 HTTP 加载外部 CSS
【发布时间】:2016-06-22 04:11:21
【问题描述】:

我有一个安全 (HTTPS) 网络应用程序,它需要从不安全 (HTTP) 来源(客户自己的网站)加载自定义样式表。这被现代浏览器阻止了,但是我需要一个解决方法,因为:

1) 我不能要求我的客户在 HTTPS 上托管他们的自定义样式表。他们没有专业知识,其中一些人制定了有关可以托管哪些主机和区域的政策(具有讽刺意味的是,与 HTTPS 无关)。 2) 我显然不能要求最终用户在他们的浏览器中禁用安全功能。

我尝试过,使用 <style>@import url(...);</style> 加载样式表,我尝试使用 src="about:blank" 创建一个 iframe 并从那里加载样式表,我尝试了 XHR 和 fetch(但这需要在我无法合理预期的远程主机)。

没有创建一个可以为网络上的任何样式表提供服务的安全代理,这里还有其他解决方法吗?

有什么魔法可以让我的页面通过 HTTP 加载跨域样式表吗?

【问题讨论】:

    标签: javascript https


    【解决方案1】:

    我尝试用我构建的 web 应用程序做同样的事情。您想要做的真正问题是浏览器。它不允许安全连接被不安全的连接破坏,尤其是当您想在该页面上注入某些内容时。我使用了这个技术:

    document.createElement("link") 
    

    注入。由于浏览器安全是一个大问题,我认为您不会发现黑客攻击.. 祝你好运! :)

    【讨论】:

      【解决方案2】:

      是否有可能下载他们的 CSS 服务器端,并通过 HTTPS 将其提供给您自己的用户?

      【讨论】:

        【解决方案3】:

        如果存在能够在安全页面上加载不安全资源的解决方法,则应尽快对其进行修补。不,该政策之所以存在,是因为在 所有 资源上没有 HTTPS,您并没有真正得到保护。任何 HTTP 连接都可能被拦截和中间人,因此页面不安全。即使是像样式表这样的小东西也会破坏这种安全性。

        必须通过 HTTPS 提供样式表,如果您的客户做不到,您将不得不为他们做。

        【讨论】:

        • "如果有一种变通方法可以在安全页面上加载不安全的资源,则应尽快对其进行修补" 这是有道理的。但是,我们可以使用 XHR显式加载不安全的资源,甚至可以跨域加载。该策略的存在(如果我理解正确的话)通过使用可能成为 MITM 受害者的样式表/脚本标签来防止 无意加载不安全的资源。这是一个很好的政策。我见过 ISP 将 JS 注入页面以显示广告的情况。但是策略应该设置安全的默认值,同时允许开发人员在特殊情况下覆盖某些东西。这就是我所说的解决方法。
        猜你喜欢
        • 2015-10-13
        • 1970-01-01
        • 2017-10-20
        • 1970-01-01
        • 2012-12-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多