我可以将信用卡存储在app中的本地数据库吗?它是否安全?

时间:2016-05-09 11:02:01

标签: android security

您好我在app应用程序中使用支付网关。我认为我的应用程序中没有存储信用卡。我想要在应用程序中保证存储信用卡 当用户重新访问我使用信用卡no.i手动输入CVC号。

1)我使用用户密钥在AES中加密了信用卡号。

它在Android应用程序中是安全的

2 个答案:

答案 0 :(得分:1)

最好的做法是不在本地存储您的应用中的数据,因为数据丢失的可能性很大,而速度的交易似乎并不值得。更好的方法是将它存储在您的应用程序可以连接的远程服务器中。

答案 1 :(得分:1)

显然,在您的应用程序中存储信用卡详细信息是一种高风险。即使仅存储信用卡号(不包括CVV / CVV2)也存在高风险,因为CVV / CVV2验证只是处理器执行的一种验证如果处理器决定这样做(对于某些交易类型),可以跳过[1]。

话虽如此,作为商家,您有能力在您的申请中存储以下内容[1]:

  • 持卡人姓名
  • 个人帐号(PAN)(卡号)
  • 到期日期

但是,您需要非常小心PAN的保护,因为您最终会处理客户的信心。尽管如此,您正在尝试实现一种增加便利性的功能,如果由于某种类型的漏洞而导致卡号暴露,您可能会比使用此功能获得更多的客户。

通常在PCI PA-DSS中,以下字段被视为需要高度安全的字段:

  • 主要帐号(PAN)(卡号)
  • 持卡人姓名
  • 到期日期
  • 服务代码
  • 完整的跟踪数据(磁条数据或芯片上的等效数据)
  • CAV2 / CVC2 / CVV2 / CID
  • PIN / PIN块

因此,如果存储PAN,最好使用强加密算法对其进行加密。通常,支付处理器遵循多键方法并且具有存储在多个不同安全环境中的多个不同密钥。最后,当需要检索解密的卡号时,应用程序组合这些密钥并进行解密[2]。

PCI PA-DSS中,还必须有一个密钥管理流程。这意味着您应该拥有一个允许您在任何时间点到期和续订密钥的流程。通过这样的过程,可以最大限度地降低密钥泄露的风险,因为您可以更新密钥,使得泄密密钥无效。也许,这对你的要求来说太过分了。

尽管如此,如果您计划存储PAN,至少使用存储在两个不同环境(数据库/文件系统)中的两个密钥进行加密,请使用非常存储的加密算法并遵循加密最佳实践({ {1}})。

然而,客户如何看待您正在实施的功能是值得怀疑的。也许,有些客户关心安全而不是方便。因此,最好为您正在实施的功能提供选择。

[1] https://usa.visa.com/dam/VCOM/download/merchants/card-acceptance-guidelines-for-merchants.pdf

[2] https://www.pcisecuritystandards.org/minisite/en/docs/PA-DSS_v3.pdf