在支付网关(如Coinbase或G2A支付 )中,典型的支付流程如下:
步骤1通常由服务器执行,以避免将API密钥泄漏给客户端。
但是,如果我要在客户端生成支付URL (为了性能--删除一个RTT到服务器),API密钥将泄露给公众。
这会对安全产生什么影响?
对于Coinbase,web钩子签名使用不同的API密钥,因此我仍然可以通过签名验证付款通知的真实性。
对于G2A支付,我可以执行一个使用交易id访问支付网关.来验证支付。
有了API密钥,任何用户都可以进行支付并将其归因于另一个用户(通过在元数据中指定其他用户的id )。但是,任何用户都没有这样做的动机。
发布于 2019-01-06 23:12:31
从攻击者的心态开始,而不是从工程师的思维开始,这是非常重要的。作为一个攻击者,我可能想利用您的私钥来满足我自己的需求,这可能有很多原因。让我们从您的eCommerce信息开始。
通过获得您的eCommerce信息,我可以开始在其他人的帐户上结账。我甚至可以创建我自己的表单来订购我想要的东西,使用其他人的卡片,并将它发送到我选择的位置。最棒的是,你根本不需要参与这场对话,所以你甚至不会看到这种活动发生。
更进一步说,我有一个我真的很讨厌的人,因为他们总是在半夜吵醒我,听着高声的音乐。如果我碰巧得到了他们的付款信息,我可以做一堆虚假的购买,这将导致他们取消他们的卡,处理欺诈活动,这将看起来你的商业帐户是罪魁祸首。我很高兴知道他们给我带来了不便,你可能永远也不知道是我干的。赢得胜利。
最后,许多API键执行的不仅仅是eCommerce批准。帐户更改可以通过许多API进行,因此可以更改业务名称、地址,甚至客户信息。更糟糕的是,您可以开始通过API窃取客户信息,这样我就可以开始用伟哥广告或更糟的方式向您的客户发送垃圾邮件;并且仍然可以连接到您的服务。这是一个很大的安全风险。
您的秘密,无论是密码、证书或API密钥,都必须始终受到保护。你不应该低估人们会用多大的努力去欺骗别人。作为一名开发人员或系统管理员,您有责任考虑这一点并确保您的客户受到保护。
最后,我从来没有建议做任何违法的,不道德的,或其他恶意的。然而,看看你构建的任何东西,看看如何滥用它,这可能是一个很好的实践。通过攻击者的眼睛查看您的工作,并尝试利用您创建的工具。攻击者的心态最好是通过应用程序来学习,如果你是在攻击你自己,你会比你以前所知道的更多地了解你自己的项目。
https://security.stackexchange.com/questions/200900
复制相似问题