将 CreditCard 信息存储到 DataBase 中的最佳实践

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

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

我的问题是,在数据库中存储信用卡信息的最佳实践是什么..。

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

你做了什么?

74669 次浏览

加密加密加密。不要解密,如果你不是绝对必须-不要解密显示最后4位数字。不要通过解密来告诉用户他们的卡是什么。

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

最低限度遵循 PA DSS (支付应用程序数据安全标准)。更多信息可以在这里找到:

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

此外,查看 PCI DSS 也是明智之举,可以在这里找到:

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

别这么做

其中涉及的风险实在太多了,您通常需要接受外部审计,以确保遵守所有相关的本地法律和安全实践。

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

我知道你所在的国家可能没有美国那么严格的法律,但在我看来,这不能成为你自己制定法律的借口。当你和别人的钱打交道时,风险太大了。

在2020年,使用 Stripe,避免自己存储支付信息。

历史答案:

为此,我推荐一种全面的、分层的方法。

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

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

第三,AES 密钥需要得到适当的保护。不要在代码中嵌入值。如果您正在使用窗口,请考虑使用 DPAPI。

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

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

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

你应该避免储存任何信用卡资料,因为这样做对你和客户都有风险。

Net 有一个 客户资讯管理器应用程式介面,允许您在他们的系统中存储客户信息。作为你账户的附加费用,每月20美元。

我建议您使用强算法(类似于 AES)和长密钥对卡号进行加密。

然后,将您的密钥保存在一个安全的地方,类似于外部硬盘或光盘。 当您需要密钥时,使用外部硬件。

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

严格控制你的数据库

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