我必须编写一个程序来检查网站是否包含混合内容。 但我不确定如何识别混合内容 是否有混合内容的确切定义?
我知道混合内容可以是以下类型:
<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?
答案 0 :(得分:2)
混合内容的定义
通过安全HTTPS连接加载初始HTML时会出现混合内容,但是通过不安全的HTTP连接加载其他资源(如图像,视频,样式表,脚本)。这称为混合内容,因为正在加载HTTP和HTTPS内容以显示同一页面,并且初始请求通过HTTPS是安全的。
混合内容会降低HTTPS网站的安全性和用户体验。
如何检测混合内容
现代浏览器会显示有关此类内容的警告,以向用户表明此页面包含不安全的资源。所以这意味着它可以是验证您的检测程序是否正常工作的好方法。
例如,在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