2014-08-28 53 views
1

我正试图找到一个跨浏览器的实现,将工作以下情况。如何限制浏览器返回外部网站?

用户完成我们的一个在线应用程序并重定向到外部在线支付系统。他们输入他们的银行信息,然后重定向到我们的应用程序,在那里他们收到确认信息。

现在,如果用户按下浏览器的后退按钮,他们将被带回外部银行网站,在那里他们可以第二次输入其银行详细信息。通常情况下,银行会注意到第二笔付款是通过相同的订单进行的,不会对它们进行双重收费,但偶尔旧版浏览器会让双倍付款通过。我相信我们可以将一些客户端代码添加到银行详细信息页面,但不能添加任何服务器端逻辑。

有没有解决这个问题的标准方案?

+1

存在 - 您不使用使用浏览器重定向的API,而是使用您的服务器来实现付款逻辑(也就是更难实现的API)。如果您选择浏览器重定向方法 - 您认为用户不是愚蠢的,并且他们不会无缘无故地按下“返回”按钮。如果他们确实按下了它,那么控制这一点并不取决于你,因此实施这个“不要自己动手”的保护措施并不是你的责任。 – 2014-08-28 13:01:52

+2

如果银行网站正确实施,则无法返回该网站并发出另一笔转账,因为某些关联的交易令牌已过期。由于它是用户浏览器历史记录中的常规站点,因此无法阻止用户返回。 – deceze 2014-08-28 13:03:50

回答

0

是的,你可以在上面您的确认页面,例如在执行额外的重新导向:

if(!isset($_GET['x'])){ 
    header("Location: ./?x=x"); 
    exit(); 
} 

那么如果用户按回去,他们会打在同一个页面,SAN的得到变量,并再次重定向

相关问题