使用Google Pay JavaScript API时防止客户端篡改

时间:2019-01-23 06:04:27

标签: javascript google-api android-pay google-pay

我正在尝试使用Google Pay API将Google Pay集成到我们的在线商店中,并且在本教程中,该代码段设置了付款金额以及JavaScript对象中的货币代码,如下所示:

paymentDataRequest.transactionInfo = {
  totalPriceStatus: 'FINAL',
  totalPrice: '123.45',
  currencyCode: 'USD'
};

这看起来非常不安全,因为任何人都可以篡改客户端上的值,然后最终单击“使用Google Pay进行购买”按钮。

当然,我还可以检查最终从付款网关发送回的值,然后将订单标记为欺诈,但如果可能的话,我也想尽早防止这种情况发生。

谢谢。

2 个答案:

答案 0 :(得分:1)

  

我还可以检查最终从付款网关发送回的值

这是唯一可行的方法。

  

如果可能的话,我也希望尽早防止这种情况发生。

不可能。客户属于访客,最终完全由他们控制。

通过混淆,您可以使其变得更难,但这使您的代码更难以调试,并且不会阻止某人仅查看最终的HTTP请求并完全不使用代码来重新创建它们。

答案 1 :(得分:0)

任何写入设备的数据都将被读取。从技术意义上讲secret时,此原则在面向用户的设备上更为突出,因为与充当服务器的机器相比,这些设备通常更容易受到其他代理和个人的关注。

您传递给loadPaymentData的交易信息永远不会确定最终要收取的金额。您从此呼叫中得到的是一种付款方式,该方式使用只有您的处理器拥有的密钥进行加密,因此,付款处理器(在服务器端)是唯一可以访问此信息的代理。通过服务器和处理器之间的安全呼叫,最终发出费用的请求继续发生。

从本质上讲,使用Google Pay检索付款信息以发出费用等同于不使用Google Pay的情况,除了付款信息从未在客户端公开(因为用户无需输入) ),因此,在此方面,该过程需要附加的安全层。