mixed content/display——https载入http资源的绕过
来源:互联网 发布:java鱼雷评测 编辑:程序博客网 时间:2024/05/29 14:54
一、问题
本文讲述的内容是针对以下问题:在https网站中,载入http网站的资源(网页、图片等),会被浏览器阻拦的问题。比如以下代码:
<iframe src="http://xxx.com/xxx.asp?param=value" />
如果是在https的页面中插入以下代码,将被浏览器拦截(实测IE、Chrome48、FF44均阻拦),导致param参数无法传递、xxx.asp无法载入的问题。
本文中提到的浏览器,若无特别指出,则IE是指最高IE11、chrome是指48、FF是指44。
二、初步绕过
此问题其实之前已经遇到过,采用https网站自带的外送功能(比如email),将param参数通过邮件发出来。这种解决方法的弊端是只能外送,不能载入资源。需要尝试别的方法。
最开始是在chrome中调试,想到http不行,就试一下ftp。测试了一下,发现chrome真的可以。<iframe src="ftp://user:pass@1.1.1.1/xxx.txt?param=value" />可以正常执行。
但不幸的是,FF和IE都不行。
三、分析
通过FF调试,发现原来有一个“混合的被动内容(Mixed Passive/Display Content)” 和“混合的主动内容(Mixed Active Content)”的概念。前者会被警告,但是仍然能够载入,后者会被直接阻拦。
然后发现一个关键网页:https://developer.mozilla.org/zh-TW/docs/Security/MixedContent。此文介绍了FF关于混合内容的具体处理方式。明确指出只有下述4种才是“被动内容”,link、script、iframe、url方式载入的CSS、js的xmlhttprequest、data属性载入的object等是“主动内容”:
<audio> (src attribute)
<img> (src attribute)
<video> (src attribute)
<object> subresources (when an <object> performs HTTP requests)
进一步发现IE的:https://blogs.msdn.microsoft.com/ie/2011/06/23/internet-explorer-9-security-part-4-protecting-consumers-from-malicious-mixed-content/,大同小异。
再搜,发现W3的:https://www.w3.org/TR/mixed-content/,但没细看。
四、解决
既然img是被动内容,那要不用img的src传送param数据?
其实最开始是因为https的网页默认不载入图片,才使用iframe送参数的,如果采用JS动态载入img呢?
经测试,成功!问题解决。
- mixed content/display——https载入http资源的绕过
- https中请求http资源报错Mixed Content
- 如何在HTTPS 网页中引入HTTP资源: Mixed Content?
- chrome浏览器 如何在HTTPS 网页中引入HTTP资源: Mixed Content
- Handling Mixed (HTTPS/HTTPS) Content
- detect http content in https context, IE: mixed content no secure alert.
- Mixed Content: The page was loaded over HTTPS,blocked the content must be served over HTTPS.
- 浏览器报Mixed Content错误的解决
- Mixed Content混合内容错误 Iframe Http页面无法访问
- 错误:Mixed Content: The page at ‘https://XXX’ was loaded over HTTPS, but requested an insecure........
- Mixed Content Page
- http post multipart/mixed的文件.
- ATS http — >https
- 错误:Mixed Content: The page at 'https://a.b.com/detail?id=5' was loaded over HTTPS, but reque
- http强制升级为https http头文件 Content Security Policy: 升级不安全的请求
- win32 菜单资源的载入
- 访问https 绕过证书验证的方法
- java实现 HTTP/HTTPS请求绕过证书检测代码实现
- windows上虚拟机里安装mac os无法识别iphone5s
- curl返回常见错误码
- 快速教程:在2D空间中使用四叉树实现碰撞检测
- Hibernat org.hibernate.MappingException: Could not determine type for: java.util.Set
- PG主从流复制WAL被覆盖解决方式
- mixed content/display——https载入http资源的绕过
- Struts2+Hibernate分页显示实例
- 生活随笔:做一回站长经营一个网站
- MySql 主键
- android架构网址
- 微信开发入门-2
- POJ 1797
- unity5自由大场景上下楼梯
- CodeForces 622B - The Time