简介
互联网的默认工作方式是客户端(如浏览器)对服务器上的资源发出请求,然后服务器提供/拒绝请求。我们的请求是在不同的URI方案下提出的,例如HTTP、HTTPS、FTP等。目前,我们将重点讨论HTTP和HTTPS URI方案。HTTP是一种事实上的方案,它是不安全的,因此远远没有在标准生产系统中使用。HTTPS是在SSL/TLS上运行的HTTP,它使内容变得模糊,从而保护其免受窃听者的攻击。
混合内容
使用HTTPS的真正目的是底层SSL/TLS协议将保护我们的数据免受所有嗅探器和窃听者的攻击。然而,就应用程序的安全性而言,这并不能结束我们的责任。如果我们的应用程序通过HTTPS运行,通过不安全的HTTP发出服务器请求,那么我们就有问题了。例如,应用程序可能正在通过SSL运行,但正在通过HTTP访问外部图像、CSS或JavaScript文件。虽然我们启用了证书和加密来保护我们的站点,但是如果交换/通信是通过HTTP进行的,物联网城市,那么所有SSL部署都将被浪费。窃听器/嗅探器仍可能持有此类未受保护的请求,并导致潜在的中间人(MITM)攻击。应用程序中的这种情况称为混合内容。由于浏览器最终会向服务器发出所有请求,云购,因此它们现在已经具备了处理此类情况的能力。IE、Chrome和Firefox目前默认屏蔽"活动混合内容"(讨论如下)。
以前用于发出警告的浏览器可以在控制台中查看。
图1:Firebug控制台用于混合内容屏蔽
现在,浏览器屏蔽了大多数活动混合内容请求。
注意:
Firefox有更好的性能(或与Chrome不同的)"混合内容块"实现。这种差异的存在是由于两种浏览器对活动混合内容的定义不同造成的。Firefox将iframe、xhr和字体混合作为活动类别。Chrome的混合内容阻塞实现不太安全,因为它不阻塞混合iframe,也不阻塞混合xhr。从chrome30开始,混合iframe就被屏蔽了。然而,云服务器 免费,混合的xhr仍然被排除在外。另一方面,Firefox仍然阻止大多数活动的混合内容对象。
WebSocket中的混合内容
WebSocket协议(ws://或wss://)是一种新的应用层协议,它可以轻松地构建快速、全双工通信通道。请注意,ws://或wss://(ws secured)连接通过HTTP/HTTPS会话本身启动,并进行协议升级。有关详细信息,请参阅此链接。因此,根据混合内容的定义,理想情况下,物联网技术与应用,如果通过HTTPS会话启动,则应删除不安全的WebSocket连接ws://并且应将所有服务器配置为通过WebSocket安全的wss://方案进行通信。
混合内容类型
混合内容请求分为两大类,如果要提交请求,则取决于引入应用程序的脆弱性/熵的程度。
例如:
IE
body{宽度:表达式(警惕,'你被抓了!');}
-moz在Firefox中绑定
body{-moz绑定:url(someeviscript.xml攻击);}
防止混合内容阻塞
现在我们公平地承认,混合内容阻塞是由于通过HTTPS会话请求HTTP内容而产生的。所以,为了解决这个问题,我们有一些可以做的和不可以做的!–您需要的任何内容–>
请注意,google字体的URL没有任何类似https://或的方案。这为浏览器提供了根据应用程序呈现的方案来决定请求方案的余地。因此,如果我们访问应用程序的非安全HTTP版本,字体将通过HTTP访问,大数据怎么查询,如果应用程序通过HTTPS访问,则方案将更改为HTTPS。
结论
阻止混合内容是浏览器供应商采取的步骤。理性的背后是相当合法的,然而这是以牺牲开发者的自由和破坏网站的成本为代价的。作为一个开发人员,我可能不太关心混合内容的喧嚣,希望我的浏览器允许。然而,我们不能期望我们的窃听者宽宏大量,因此它应该进入每个web开发人员的最佳实践列表,以避免完全混合内容。
一个警告
解决混合内容阻止的另一个紧迫问题是Chrome设置为删除所有混合内容XHR和WebSocket连接在下一个版本中。这确保了通过HTTPS呈现的应用程序/文档不能启动任何基于HTTP的XHRs或任何ws://连接。Firefox已经封锁混合内容websocket连接一段时间了,这一步确保所有内容现在都通过TLS。