我在很多小型企业电子商务网站上看到的一个常见特征是,当我点击“结账”按钮时,我会离开网站并重定向到第 3 方支付网关的 url,如 paypal、authorize.net等等...在这个第 3 方网站上付款后,我被重定向回小型企业电子商务网站。
我想为我的一些客户简化这个过程。我计划制作一个付款表格,其他人可以通过 iframe 将其嵌入到他们的网站中。付款表格将在 SSL 之后。当我的支付表单收到信息时,我会将其传递给商家网关(如 paypal),并使用成功/失败响应重新加载 iframe。
这种 iframe 方法是否存在任何重大问题?我问是因为我不记得像 paypal 这样的支付网关为他们的支付页面提供 iframe 嵌入代码,尽管提供它似乎是一件微不足道的事情。如果他们可以向网站所有者提供结帐网址以嵌入到他们的页面中,那么他们应该能够轻松地提供 iframe 嵌入代码。
HTTPS 连接安全性的一个基本方面是验证远程方的身份。与某人 secret 交换数据是一回事,但您需要知道与谁交换数据。
从技术的角度来看,服务器的身份是使用其证书来验证的:
- 它需要被信任,即客户端可以验证它是由它信任的机构颁发的 (RFC 3280/5280)。
- 它需要发给客户端想要与之交谈的实体,即需要验证主机名(RFC 2818,第 3.1 节)。
但是,技术方面只是解决方案的一部分。用户需要能够看到浏览器正在尝试连接到哪个站点。这是一个用户界面问题,只有用户可以根据其 UI 显示的内容检查浏览器正在尝试做什么(期望大多数用户使用开发人员工具是不现实的)。
使用 iframe 隐藏用户实际连接到该 iframe 的站点的名称(地址栏中仅显示主页的地址)。这会阻止用户进行此验证。
此外,如果 HTTPS iframe 位于 HTTP 页面内,情况会更糟,在这种情况下,用户甚至根本无法检查是否使用了 HTTPS。
嵌入式 iframe 有一些不好的例子,特别是 3-D Secure ,因为 (a) 它建议使用 iframe,并且 (b) 即使未使用 iframe,该名称通常与用户的银行、商家网站或信用卡公司无关。