付款网关API登录名和交易密钥可能造成什么样的损害?
目前,我正在招聘一名网络开发人员,该人员将在处理信用卡的网站上工作。尽管他没有登录到支付网关UI的凭据,但由于它已嵌入在应用程序的代码中,因此他将有权访问API登录名和交易密钥。
我想知道与该信息可能造成的损害类型有关的所有"假设情况"。显然,他可以处理信用卡,但钱会进入网站所有者的银行帐户,因此我不确定会造成多大的损失。谁能想到其他可能的情况?
更新:正在使用的支付网关是Authorize.net。
解决方案
如果开发人员可以访问原始信用卡号,那么这可能会成为一个更大的问题,因为网站可能与欺诈活动相关联(假设开发人员是坏苹果)。 (他们可以将帐号,CCV,有效期重定向到另一个站点,尽管这可以通过网络工具和全面的代码检查来发现。)
API是否执行" $ 1.00"费用(或者" $ X.XX")以验证可以向信用卡收取一定金额(从而将结果返回给调用者,例如"是"或者"否") ?如果是这样,它可以用于自动验证在Internet上交易的信用卡帐号,并且滥用该系统可能会导致我们回返。
使用我使用过的任何网关,支付处理器都会将API密钥绑定到商家站点的特定IP或者IP范围。话虽如此,除非所讨论的恶意(?)代码与商家在同一服务器上执行,否则在这方面就不会有任何安全隐患。
如果不是商人站点,请与他们联系并询问是否可行。
付款网关是否允许冲销费用?如果是这样,则可能会运行许多骗局。
该网站是否处理退款?将来会吗?
如果我们谈论的是邪恶用途,那么如果进行了许多未经授权的购买,则可能会对网站所有者进行调查。如果对所有者进行调查,那会对我们有什么影响?
从描述看来,该开发人员将可以访问客户卡的详细信息,在这种情况下,客户的隐私可能会受到损害。我们可能会考虑在合同上措词适当,以确保覆盖这个角度。
但是,主要要点是,如果我们正在处理敏感的项目/信息,那么最好找到可以信任的人。雇用软件公司来完成这项工作可能会在以后为我们节省一些时间。
他们真的需要访问生产站点吗?
不要将密钥存储在代码中,也不要将其存储在生产数据库中或者生产服务器上的文件中。
这里有一些很好的答案,我只是补充说我们可能在PCI方面遇到了一些麻烦。
PCI-DSS特别规定了职责分离,生产环境与开发/测试的隔离,对不需要它的任何人的加密密钥的保护等。
正如@Matthew Watson所说,请重新考虑这一点,不要将生产访问权限授予开发人员。
顺便说一句,如果他可以直接访问API,我们如何确保"钱进入网站所有者的银行帐户"?更不用说访问所有信用卡数据了...
首先,最好不要将这种类型的信息存储在纯文本中。通常,人们将其作为信用卡号的二手知识(可悲的是,仅出于法律原因),但是我们不希望他人通过数据库/源代码访问查看的任何私人数据都应加密。我们应该以良好加密的格式将帐户信息存储在某处,并应提供一个测试帐户供开发人员在其开发工作站上使用。这样,只有具有服务器访问权限的人才能看到加密的信息。
这样,我们可以在开发人员的工作站上建立一个数据库,并将测试帐户的API信息存储(希望加密)在本地数据库中,但是当代码镜像到生产服务器时,它将仍然使用存储在其上的实时真实网关信息生产服务器的数据库,无需额外的代码/配置。
如此说来,我认为拥有API身份验证详细信息的程序员不会做太多事情。无论哪种方式,我认为都不值得冒险。
希望对我们有所帮助。
PS:如果确实发生了不良情况,请在采取预防措施以确保不会再次发生后,始终可以在authorize.net上的Web界面中生成新密钥。