如何验证网站是否包含混合内容

时间:2017-09-20 12:57:54

标签: javascript html css ssl mixed-content

我必须编写一个程序来检查网站是否包含混合内容。 但我不确定如何识别混合内容 是否有混合内容的确切定义?

我知道混合内容可以是以下类型:

<img src="$unsafeContent">

<script src="$unsafeContent">

<object data="$unsafeContent">  

<audio src="$unsafeContent">

<video src="$unsafeContent">

<form action="$unsafeContent">

<iframe src="$unsafeContent">

<embed src="$unsafeContent">

<source src="$unsafeContent">

<param value="$unsafeContent">

<a href="$unsafeContent">

但是在javascript中组合字符串怎么样?我不能轻易认出他们。 我是否必须下载并检查其内容? 同样的问题适用于css文件。 那iFrames或锚点呢?我是否必须检查它们的页面,或仅检查目的地的URL?

3 个答案:

答案 0 :(得分:2)

混合内容的定义

通过安全HTTPS连接加载初始HTML时会出现混合内容,但是通过不安全的HTTP连接加载其他资源(如图像,视频,样式表,脚本)。这称为混合内容,因为正在加载HTTP和HTTPS内容以显示同一页面,并且初始请求通过HTTPS是安全的。

混合内容会降低HTTPS网站的安全性和用户体验。

来源:https://developers.google.com/web/fundamentals/security/prevent-mixed-content/what-is-mixed-content?hl=en-us

如何检测混合内容

现代浏览器会显示有关此类内容的警告,以向用户表明此页面包含不安全的资源。所以这意味着它可以是验证您的检测程序是否正常工作的好方法。

例如,在Chrome DevTools(F12),网络标签上,您将看到不安全内容请求的(已屏蔽:混合内容)状态。

检测混合内容基本上是检测不使用HTTPS协议加载的内容,因此检查您提到的标记非常简单,您只需运行正则表达式或xpath即可完成此操作。但困难的部分是检测动态加载内容(即XMLHttpRequest调用)。因此,在这种情况下,您必须等待页面上的javascript运行。像Selenium Web Driver http://www.seleniumhq.org/projects/webdriver/这样的工具可以让你用任何Java,C#,Ruby,Python,Javsascript语言进行浏览器自动化。

正如Detect broken SSL or insecure content warning with Selenium, BrowserStack, & Node.js建议的那样,只需检查Firefox WebDriver日志的非常简单的脚本就是一个简单的解决方案。

答案 1 :(得分:0)

感谢您的提示。现在我有了一个很好的解决方案。 使用npm-module&#34; chrome-remote-interface&#34;。有了这个你就可以 通过Debugging-Api获取有关无头Chrome的混合内容的信息,如https://chromedevtools.github.io/devtools-protocol/tot/Security/

所述

还有一个Java https://github.com/webfolderio/cdp4j的解决方案。 (如果选择此解决方案,请不要忘记检查许可证)

答案 2 :(得分:-1)

您应该能够在无头模式下运行Chromium(无图形)并启用一些调试以查看该方(浏览器实际)正在收集的所有URL。

获得网址列表后,请将规则应用于安全与否。

https://chromium.googlesource.com/chromium/src/+/lkgr/headless/README.md