在安全页面上查找所有不安全的内容

67

如何以最有效的方式查找HTTPS页面请求的所有非HTTPS URL列表?如果发生此类安全违规,每个浏览器都会向用户发出警报,但我找不到一个简单的方法来查找到底哪些URL导致了违规。

到目前为止,我发现最简单的方法是使用Firefox,但即使这样,它仍然不太方便。首先,我可以右键单击,选择“查看页面信息”,点击“媒体”选项卡,并滚动浏览URL列表。然而,这似乎只列出图像文件,而不是也可能引起错误的CSS或JS包含文件。对于这些文件,我必须使用Firebug扩展程序,选择“网络”选项卡,并手动将鼠标悬停在每个项目上,以查看完整的URL。不幸的是,如果有几十个媒体文件,这可能需要一段时间。是否有更好的方法?


你可以尝试使用Firefox的TamperData插件 - Pointy
我知道这是一篇旧帖子,但也许这会对某些人有所帮助。有一个桌面应用程序可以用来扫描并报告整个网站上的混合内容问题:https://www.ecommerce.co.uk/httpschecker。你也可以通过电子邮件请求扫描结果 :) - stilliard
12个回答

99

注意,在最新版本的Chrome中,这些错误将在Javascript控制台中显示。

例如:

The page at https://mysecuresite.com displayed insecure content from http://unsecuresite.com/some.jpg.

7
在 Firefox 中,从 HTTPS 连接发送的 HTTP 请求会在 Web 控制台(工具>Web 开发者>Web 控制台Ctrl+Shift+K)中以红色显示。 - AxeEffect
2
如果在使用Chrome或Firefox控制台时仍然无法看到HTTP不安全请求,则必须使用Fiddler或建议下面的WhyNoPadlock.com。 - AxeEffect
注意浏览器插件可能会导致问题。 - Matt Watson
我发现在这方面,Chrome比其他任何浏览器都要可靠得多。这是我能够追踪到一个资源的唯一方法,该资源被加载到了一系列已加载的JS资源中。Firefox和两个在线检查器(SSLcheck和Why No Padlock)无法识别它,尽管Firefox确实抱怨它存在并阻止了特定内容,但它没有在控制台中报告它。 - user2493235
即使是 Firefox 也可以在控制台中使用。重点是,它在浏览器的控制台中可用。 - pankaj

32

5
不适用于需要身份验证的内容。 - Obie
2
我更喜欢@Rob的答案。他分享的网站可以准确告诉你哪些项目是不安全的。我的问题是Google字体在没有https的情况下被请求,这个网站帮我节省了很多时间,让我检查所有包含文件中的https。 - pmalbu
该工具显示未发现任何不安全内容,而下面另一位用户分享的工具(SslCheck)则显示有六个页面存在不安全链接(这才是真正的罪魁祸首)。 - Alam

12
您可以使用SslCheck

这是一个免费的在线工具,可以递归地爬行网站(跟随所有内部链接)并扫描不安全的内容 - 图片、脚本和CSS。

(声明:我是其中一名开发人员)


1
虽然这个链接可能回答了问题,但最好在此处包含答案的基本部分并提供参考链接。如果链接页面更改,仅有链接的答案可能会失效。 - Raedwald
4
这是一个在线工具。你如何在这里包含其必要部分? - Mike
2
不错的工具,但它没有检查<form>元素。在我的情况下,一个网站采用了<form method="get" action="http://www.google.com/search">来实现他们的搜索,这导致了Chrome的警告。 - Abe Voelker
1
@AbeVoelker 谢谢,我会联系团队更新它。 - Alex from Jitbit
1
谢谢您分享这个很棒的工具,我是通过 Google 找到它的,但是来到这里是为了确认它是否可以正常使用。 - Alam
显示剩余2条评论

11
我最近遇到了同样的问题。使用Chrome的开发者工具,更容易找到。在开发者工具中,转到安全选项卡。在那里,您可以找到所有非HTTPS请求。

Screenshot of the Developer Tools 'Security' tab


6

我遇到了一个在JavaScript中出现的问题:

/* for Internet Explorer */
/*@cc_on @*/
/*@if (@_win32)
    document.write("<script id=__ie_onload defer src=javascript:void(0)><\/script>");
(.....)

避免使用src=javascript:void(0)。

使用Fiddler或Chrome无法找到此问题。


5

使用 Fiddler 工具。

安全请求将完全不会显示(除了作为 HTTPS 连接,可以隐藏),因此您所看到的都是不好的。


哎呀,我在使用Linux系统,但是它说需要Windows系统。它在Mono下能够工作吗? - Cerin
1
我猜不会,但我不确定。 - SLaks
不一定是@Obie,我正在使用Mono在Ubuntu上运行它,这是微软.NET的开源实现,非常容易安装和使用。 - Juan Antonio

3
你可以查看https://www.missingpadlock.com/。这是一个在线工具,用于爬取您的网站以查找不安全的页面。请注意,保留HTML标记。

2
如果您拥有该网站,您应该了解Content-Security-Policy头选项。 这些可以包括强制使用HTTPS资源, 或自动尝试将HTTP资源重定向到HTTPS,等其他内容。
值得注意的是,还有一个report-uri指令与密切相关的Content-Security-Policy-Report-Only header,它会将您的CSP违规情况报告到您选择的uri。这意味着任何支持1report-uri的浏览器都会定期向您发送有问题的HTTPS页面的报告。Mozilla开发者网络提供了一个PHP示例来处理这些报告。
请注意,如果您可以合理地期望任何支持完整 CSP(RO) 的浏览器都能访问相关页面,那么一些不支持它的浏览器就无关紧要了。

1
这是一件无论如何都应该持续进行的事情。如果您自己无法方便地处理报告端,可以使用像 https://report-uri.com/ 这样的服务。 - dartacus

1

我想留下一条关于遇到这个问题时发生的事情说明。

突然间我的域名显示“混合:不安全项目”。我完全找不到原因。控制台只显示正在请求一个图片:http://www.example.com/,但我无法在任何地方找到任何关于它的引用。

我搜索了很久,最终发现在Chrome的安全选项卡中,当它显示“不安全内容”时,它会说“在网络选项卡中显示”。当我点击它时,它向我显示了坏URL,再次没有除引发者列之外的任何信息。它展示了图片footer_bg.jpg

有人将代码注入我的页脚背景图像中吗?事实证明不是,我不经意间昨天移动了那个图像并忘了它。所以页面请求的是一个不存在的图像,导致出错。我修复了图像链接,页面再次安全加载。

仅供日后可能遇到此问题的其他人参考。


1
如果您想要一次性、相对全面、递归扫描整个网站,您可以使用Bramus的mixed-content-scan命令行工具。它不会检查JS/CSS补充链接,但是非常适合查找三年前实习生发布的带有危险非SSL脚本的文章。
如果您需要一个持续的解决方案,请参见我的其他答案

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接