iframe是非SSL站点上的SSL安全表单

时间:2010-03-16 20:36:30

标签: ssl iframe

我向客户提出了一个请求,希望其中一个现有表单出现在另一个网站上。

他们希望在iframe中显示付款方式。

当涉及付款处理时,如果在SSL网站中将iframing编入非SSL网站,会有什么影响?

2 个答案:

答案 0 :(得分:6)

现代Web浏览器不会提供任何安全警告,因为父窗口在HTTP上运行不安全。但是,由于安全内容位于子窗口(iframe)内部,因此您的Web浏览器不会在地址栏中显示安全锁定图标,因此您的用户可能会害怕表单可能不安全。

因为所有的网络浏览器,经典& modern,拒绝通过Javascript访问iframe内容,因为iframe使用的是不同的协议和/或域名。此时与iframe进行通信的唯一方法是通过现代Web浏览器中实现的postMessage函数,该函数允许通过Javascript进行跨域通信。即使您使用的是postMessage,iframe也需要包含侦听来自父窗口的postMessage事件的代码,在iframe中开发支付表单的情况下,只有父窗口才需要监听事件。付款已处理完毕。因此,如果您通过postMessage单方面保持通信(iframe仅执行postMessage,父级侦听消息),则不太可能发生中间人攻击。

当然,任何人都可以覆盖事件监听器并在父窗口上执行代码,诱使服务器相信付款已被处理。这时您将需要在服务器端代码中采取预防措施,以检查确保事务确实合法发生。在我的情况下,我的付款表单(iframe)在数据库中创建一个临时密钥,并通过postMessage将该密钥发送到父窗口。然后,父窗口对服务器进行AJAX调用,检查数据库以查看密钥是否匹配,并在创建事务确实发生的记录之前快速删除密钥。

答案 1 :(得分:5)

您的用户的浏览器会给他们安全警告,基本上说这是一个不安全的情况。例如,中间人攻击可能会将javascript注入您的非SSL页面,现在您可能会受到攻击。

在这种情况下,弹出窗口或平面页面重定向是执行此操作的适当方法。您可能已经清楚地意识到,在这种情况下,您希望浏览器中100%的内容都通过SSL托管。否则,您无法保证受到保护。这就是这些警告的原因。