【问题标题】:Mixed Content warning on Chrome due to iframe src由于 iframe src,Chrome 上出现混合内容警告
【发布时间】:2018-02-22 17:07:06
【问题描述】:

在代码的某处,通过一个安全站点,使用了以下 sn-p:

var iframe = document.createElement("IFRAME");
iframe.setAttribute("src", "pugpig://onPageReady");
document.documentElement.appendChild(iframe);
iframe.parentNode.removeChild(iframe);
iframe = null;

此处设置的 iframe src 属性实际上会触发回调,但它会导致 Chrome(版本 54)抱怨“混合内容”,因为 src 属性被解释为 https:// 域上的非 https url,并且Chrome 版本并未向用户提供允许加载混合内容的简单选项(例如地址栏中的盾牌图标)。

由于某些原因,更改 Chrome 版本/使用不同的浏览器/使用 --allow-running-insecure-content 开关启动 chrome 不是一个选项,所以我的问题是,有没有办法制作“pugpig:/ /onPageReady" 部分被视为 https url?

【问题讨论】:

    标签: javascript google-chrome iframe https mixed-content


    【解决方案1】:

    你可以试试这个:-

    <meta http-equiv="Content-Security-Policy" content="upgrade-insecure-requests" />
    

    或者

    <meta http-equiv="Content-Security-Policy" content="block-all-mixed-content" />
    

    将其粘贴到&lt;head&gt;...&lt;/head&gt; 标签中。

    当使用 HTTPS 加载页面时,HTTP Content-Security-Policy (CSP) block-all-mixed-content 指令可防止使用 HTTP 加载任何资产。

    所有混合内容资源请求都被阻止,包括主动和被动混合内容。这也适用于&lt;iframe&gt; 文档,确保整个页面没有混合内容。

    upgrade-insecure-requests 指令在 block-all-mixed-content 之前进行评估,如果设置了前者,则后者实际上是空操作。建议设置一个指令或另一个——不要同时设置。

    【讨论】:

    • 非常感谢,&lt;meta http-equiv="Content-Security-Policy" content="upgrade-insecure-requests" /&gt; 在将 srcdoc 属性用于沙箱外部代码 sn-ps 时帮助了我。那些 sn-ps 加载的脚本本身使用协议相关 url(只是 //someurl.com)。 srcdoc 似乎被认为是不安全的,即使从 https url 调用
    • 第一个元标记解决了我的问题(带有 src 的 iframe 以 https 为目标,但控制台中仍然出现混合内容错误)。
    【解决方案2】:

    据我所知,不,不是。如果有,可以认为是一个安全漏洞,会被修复。

    mixed content explaination

    【讨论】:

    • 我知道混合内容的安全隐患。正如您在我的问题中看到的那样,有一些方法可以绕过它,我并不是在问我正在尝试做的事情是否安全,而是考虑到我的额外要求,另一种可能的方式。您的回答不会增加任何价值,因为这是一个技术问题,而不是道德问题。
    • 我的意思是双方是联系在一起的。出于安全原因,浏览器不允许(该开关除外)这样做。因此,如果您能找到一种方法来做到这一点,那么您将使安全块变得毫无用处。如果他们允许这样做,就像在软件中留下一个安全漏洞一样。所以你必须通过https,或者如果主要资源不是通过https,则代理它。
    • 感谢您的解释,但同样,这不是关于整个安全流程或软件公司应如何保护其婴儿或普通用户的讨论。这是一个技术问题,如果您不知道实现我所要求的方法,那么不提供通用答案可能更有用。顺便说一句,我的功能所在的 URL 无法公开访问,甚至用于访问此应用程序的机器也只使用私有且安全的网络。并不是说它仍然是 100%,但你明白我希望的想法。
    • 也许我无法解释自己。我会尝试最后一次。这不是技术上的问题。当他们构建该浏览器时,他们决定阻止混合安全和不安全内容的所有方式。当我说各种方式时,我的意思是各种方式,这是出于安全原因。所以没有办法,很简单。我发布的链接谈论的是被动和主动内容,因此您甚至无法加载图像或 CSS。试想一下,如果您可以加载类似脚本之类的东西。如果我错了,我会很高兴阅读其他用户的帖子。
    • 我认为你还没有真正了解我的 cmets。
    猜你喜欢
    • 2016-06-22
    • 1970-01-01
    • 2010-10-17
    • 2013-01-04
    • 2020-01-25
    • 2017-02-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多