在 HTTP 页面中嵌入 HTTPS iframe 的特定风险

信息安全 Web应用程序 tls http 中间人 信用卡
2021-08-31 09:21:53

我需要帮助列出在 HTTP 页面内嵌入支持信用卡结账的 HTTPS iframe 的特定风险。在 HTTP 页面上嵌入 HTTPS iframe 是否存在安全问题?提供了一些高级别的问题,但我希望尽可能具体地了解潜在的攻击媒介。单击立即购买以获取不安全页面内的安全 iframe 的一个很好的示例,该页面目前用于信用卡交易。这是我到目前为止所拥有的:

  • 转化率可能会更低,因为受过教育的用户会知道在没有看到浏览器 chrome 的 URL 中出现绿色锁的情况下不要输入他们的信用卡号。(知识较少的用户可能不知道他们不应该相信出现在浏览器框架内的锁,如上例所示。)
  • 即使用户对这种方法感到满意,当用户在 URL 栏中看不到 SSL 锁定确认时,鼓励用户输入他们的信用卡号通常也是一个坏主意。它正在教用户不良的安全习惯。这篇文章表明 SSL 不仅仅是加密和身份验证,而是关于安全性。
  • 中间的一个活跃的人可以将一个流氓脚本注入到可以击键窥探的父页面中。我相信这就是突尼斯政府为窃取持不同政见者的 Facebook 凭据所做的事情。(我相信流氓脚本将被阻止从安全 iframe 访问用户名和密码,但仍然可以访问击键)。当然,更坚定的政府机构也可以颠覆 DNS 并伪造 SSL 证书,就像伊朗政府显然所做的那样,在这种情况下,安全的父页面将无济于事。

我也有这个不切实际的担忧清单:

  • 不安全父页面上的另一个 Javascript 对象可以窥探安全 iframe 的内容。我相信只要只支持 IE8 及更高版本的浏览器,这将不再可能。
  • 父页面上的恶意 Javascript 对象可以进行击键记录以捕获用户的信用卡号。这可能是可能的,但风险不受父页面是否通过 SSL 提供的影响。流氓脚本可以通过任何一种方式进行击键监听。
  • 用户看不到提供安全 iframe 的 URL。对于安全或不安全的父页面,您需要成为技术娴熟的用户才能查看 iframe 源 URL。

您能否告诉我我还缺少哪些其他现实和不切实际的漏洞?我毫不怀疑最好的选择总是将安全的 iframe 嵌入到安全的父页面中。我要决定的是,在不安全的页面中启用安全 iframe 的相对风险和收益与将用户从他们看到产品的不安全站点跳出以在其他地方完成安全结帐的糟糕用户体验相比。

2个回答

可以在父页面中嵌入恶意脚本的攻击者也可以简单地更改 iframe 的 URL,将其重定向到任意位置,此时各种网络钓鱼和中间人设置都很容易。无需在该级别玩 DNS 技巧。这是这样一个 HTTPS iframe 的主要问题:你不能轻易知道你是否得到了真正的东西(你必须启动浏览器调试模式才能真正确定——粗略查看页面源最终是不够的,因为脚本已加载从页面可以在 DOM 级别随意操作它,所以你在源代码中看到的不一定是你得到的)。

这真的归结为 iframe 缺少 URL 栏。对于 HTTPS 站点,URL 栏会向您显示正确的 SSL 已到位,并带有有效的服务器证书,并且它会告诉您实际正在与之通信的服务器的名称。去掉栏杆,各种恶作剧都成为可能。

从好的方面来说,HTTPS iframe,如 HTTP 页面中登录表单的 HTTPS 目标 URL,非常适合仅被动攻击者(这种攻击者会监听所有交换的字节但从不自己注入任何内容) . 碰巧相信大多数攻击者只是被动的,如今变得异常幼稚。


至于用户体验,通常的建议是简单地使整个站点使用 HTTPS。从计算的角度来看,它比通常认为的要便宜得多。一般来说,人类并不擅长预测性能问题。性能是衡量的问题,而不是猜测的问题。我建议你试试看。

此外,作为用户(尽管不一定是典型用户),我有点喜欢从 HTTP 到 HTTPS 的可见转换。结账是关于钱的,更重要的是,关于我的钱。因此,它很重要

单击立即购买以获取不安全页面内的安全 iframe 的一个很好的示例,该页面目前用于信用卡交易。

除了所有提到的技术原因之外,这是一件非常糟糕的事情,这明显违反了 PCI-DSS 要求。请参阅“导航 DSS 2.0”要求 4.1:

When using SSL secured websites, ensure “https” is part of the URL

链接接口违反了商家在与银行协议中签署的 PCI 条件。ShopLocket 似乎正在提供/鼓励一种公然不符合 PCI 以及非常值得怀疑的卡片处理方法。