确保用购买,客户已经有效地支付了,依赖于从谷歌服务器到商家服务器的带外回发。显然,此时由Google发送的唯一参数是最初发送给客户端的原始JWT令牌,带有一个附加的订单ID。
如何确保此回发来自Google?
我可能遗漏了一些东西,但是如果商家服务器使用一个简单的URL (如postback.domain.com
),攻击者很容易通过轮询来猜测它,然后使用原始的JWT令牌发出虚假的付款确认调用,再加上一个虚拟的订单ID。对我来说,商家服务器无法确保回发是否有效。在安全性方面,使用带有一些嵌入式密钥的回调URL似乎是一个糟糕的解决方案。
这很奇怪,因为应该很容易在回发中包含一个简单的签名。例如,在初始JWT令牌中包含基于JWT令牌内容的散列、商人帐户私有共享密钥和商人服务器生成的新的随机序列。此散列只能由Google和商家计算,并可用于检查回发的真实性。
发布于 2014-03-10 15:42:31
JWT包含您所指的散列--这是第三段。您需要使用您的验证回发JWT使用seller secret
。
iat
和exp
字段(分别在到期时发出)帮助您处理重播问题和您所指的“随机序列”(虽然不是真正的“随机”)。
哈.
https://stackoverflow.com/questions/22301751
复制相似问题