将信用卡信息存储到DataBase的最佳实践

时间:2010-06-08 23:48:43

标签: mysql database security database-design credit-card

在我的国家,在线支付并不是一件旧事,我第一次看到一个直接向当地银行账户付款的网络应用程序是去年。

所以,我是一个新手编码的网络支付系统。

我的问题是,将信用卡信息存储到数据库中的最佳做法是什么......

我有很多想法:加密信用卡,数据库安全限制等等。

你做了什么?

7 个答案:

答案 0 :(得分:83)

不要做

涉及的风险太大,您通常需要进行外部审计,以确保您遵守所有相关的当地法律和安全措施。

有许多第三方公司为您做这件事,他们已经遇到了确保他们的系统安全,遵守当地法律等所有麻烦。我过去使用的美国的一个例子是authorize.net。有些银行还拥有可以存储信用卡数据和处理付款的系统。

我意识到你所在的国家可能没有像美国那样严格的法律,但我认为这不是推销自己的国家的借口。当你处理别人的钱时,风险太大了,无法保证。

答案 1 :(得分:33)

为此,我建议采用全面的分层方法。

首先,存储信用卡信息应该是一种选择。

其次,应使用强大的加密方式安全地存储数据。我推荐使用256位密钥大小的AES。确保在选择密钥时,使用整个密钥空间(只是使用随机生成的字母数字符号字符串作为密钥,这是一个新手错误。)

第三,需要正确保护AES密钥。不要在代码中嵌入值。如果您使用的是Windows,请考虑使用DPAPI。

第四,您需要设置数据库权限,以便应用程序和计算机可以根据需要进行访问。

第五,保护连接字符串到您的数据库。

第六,确保任何可以访问信用卡数据的应用程序都能正确保护它。

答案 2 :(得分:22)

在miniumum遵循PA DSS(付款申请数据安全标准)。更多信息可以在这里找到:

https://www.pcisecuritystandards.org/security_standards/pa_dss.shtml

看看PCI DSS也是明智的,可以在这里找到:

https://www.pcisecuritystandards.org/security_standards/pci_dss.shtml

答案 3 :(得分:2)

由于您和客户的风险,您应避免存储任何信用卡信息。

答案 4 :(得分:1)

加密加密加密。如果您不必绝对不要解密 - 请勿解密以显示最后4位数字。不要解密告诉用户他们的卡是什么。

事实上,如果可以的话,甚至不要将加密的卡号保存在与其他用户信息相同的物理服务器中。

答案 5 :(得分:1)

Authorize.net有一个Customer Information Manager API,可让您将客户信息存储在他们的系统中。它的价格是20美元/月。作为您帐户的附加组件。

答案 6 :(得分:-4)

我建议您使用强大的算法(类似的AES)和长密钥来加密卡号。

然后,将您的密钥保存在类似外部硬盘或光盘的安全位置。 当你需要密钥时,请使用外部硬盘。

如果您使用的是共享主机,则必须将密钥存储在外部设备中。

严格数据库

  1. 为您的数据库定义严格用户
  2. 如果不需要,请删除数据库的root用户。