HTTP和HTTPS iframe

44

我正在创建一个小部件,并希望允许其他人使用它。该 iframe 是通过 HTTP 加载的,但我想允许用户通过 HTTPS 登录。也就是说,通过 SSL 发送登录请求。

这是否符合同源策略?也就是说,用户可以将我的 JavaScript 集成到他们的网站中,小部件会打开,我想允许他们通过 HTTPS 登录?


我在这里提供了几种独特的方法来解决这个问题:https://dev59.com/TGMl5IYBdhLWcg3wiXZ7#25189561 - Matthew Peters
3个回答

51

在普通HTTP页面中嵌入通过HTTPS提供的内容(或混合内容)的iframe通常是不好的做法。原因是用户无法很好地检查他们是否使用了他们想要使用的HTTPS网站(除非用户真的想要检查页面的源代码)。

攻击者可能会替换您提供的内容,如下所示:

<iframe src="https://your.legitimate.example/loginframe" />

使用:

<iframe src="https://rogue.site.example/badloginframe" />

或者甚至:

<iframe src="http://rogue.site.example/badloginframe" />

这对用户来说很难检测,而且会破坏您通过启用HTTPS进行的登录安全措施。


6

@Bruno - 我同意,但我想指出,即使检查页面的源代码(尽管这很苛刻),也不能确保安全性或正确/预期的目标,因为那通常是最初提供的源文本。除非我严重错误,否则可以轻松使用页面内或甚至页面外的javascript代码来更改它(如果有人真的想使其几乎不可能找到,还可以对其进行混淆)。话虽如此,如果用户拥有适当的浏览器,我认为他们可能能够-如果他们一开始就怀疑 - 检查iframe的源以确定该代码的来源,然后确定他们是否信任该源...这并不是一个合理的期望。

虽然所有这些都可以通过适当的调试器和/或软件/DOM检查器以及大量的数字肘部油脂来确定,但OP不能合理地期望每个人都这样做(如果根本没有人)


3
99.9%的互联网用户不知道或不在意查看页面源代码。我很难想象您如何说服我的父亲去检查源代码,更别说使用调试器了。 - sampathsris

4

我做了一些测试,发现如果您从一个https页面链接到另一个具有https的域名,则需要有效的SSL证书。


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