确保 Google Wallet for Digital Goods 的购买有效支付由客户依赖 out-从Google服务器到商家服务器的带内回发。显然,Google服务器此时发送的唯一参数是最初发送给客户端的原始JWT令牌,带有附加订单ID。任何客户都知道此JWT令牌。
如何确保此回发源自Google?
我可能会遗漏某些内容,但如果商家服务器使用简单的网址(例如postback.domain.com
),则攻击者可以通过轮询轻松猜出,然后使用原始JWT令牌发出虚假付款确认电话,加上虚拟订单ID。对我来说商家服务器无法确保回发是否有效。在安全性方面,使用带有某些嵌入式密钥的回调URL似乎是一个糟糕的解决方法。
这很奇怪,因为它应该很容易在回发中包含一个简单的签名。例如,基于JWT令牌内容,商家帐户私有共享密钥和由商家服务器生成的新随机序列的散列包括在初始JWT令牌中。此哈希只能由Google和商家计算,并且可能已被用于检查回发的真实性。
答案 0 :(得分:1)
JWT包含您所指的哈希 - 它是第3段。您需要verify the postback JWT使用seller secret
。
iat
和exp
字段(分别在到期时发布)可以帮助您解决重播问题和“随机序列”(虽然不是真正的“随机”)你也指......
H个....