mysql - 如何安全地加密数据库中的信用卡信息

标签 mysql database encryption credit-card

我已经通读了 Saving credit card information in MySQL database?Storing Credit Card Information .

我知道存储信用卡信息需要 PCI 合规性,这不是一件容易的事。

这不是这个问题的目的。我的问题如下:

加密用户信用卡的安全方法是什么?想到的最简单和最容易的是使用私钥并用它加密 CC。这看起来不太安全,因为 key 必须存储在服务器上,如果攻击者可以获得我的数据库,他们也可能获得 key 。

我希望能够做的是在加密过程中使用该用户密码对每个 CC 进行加密。如果有人获得数据库,他们将无法解密任何内容,因为密码存储为加盐哈希。这对于交易购买非常有用——用户点击“购买”,输入他们的密码作为确认,我解密他们的 CC 并进行收费。他们的密码仅在请求期间存在于内存中,永远不会写入磁盘。

不幸的是,这不适用于我正在尝试构建的服务 - 一项收取经常性费用(例如,每月一次)的服务,无论我需要收费时用户是否登录.

鉴于这种情况,是否有一种安全的方式来存储用户 CC?

最佳答案

由于您需要能够解密,所以加密 key 总是有可能泄露,您将失去一切。因此,您永远无法获得绝对的安全性,但可以让攻击者更难获取数据。

除了您之外,没有人可以真正判断您应该拥有什么级别的安全性(或模糊性)。这很可能是数据库大小、可见性等的函数。

对于泄漏,不幸的是,您必须假设所有内容迟早都会泄漏(例如,对弱密码进行暴力攻击),当它们泄露时您并没有得到太多。

考虑到最近的信用卡泄露丑闻 - 最糟糕的是将 3 位数 (CVV) 号码与普通信用卡号码一起保存,信用卡公司明确禁止这样做(这就是为什么你总是必须再次提供它,即使如果有人存档了您的信用卡信息)

如果您不想承担持有和处理此类数据的责任,一个好的方法是使用外部支付服务 - 让他们进行处理并向您断言付款已处理.您必须为他们的服务付费,但您也必须为实现您自己的解决方案和承担风险付费。

关于mysql - 如何安全地加密数据库中的信用卡信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11046167/

相关文章:

PHP + MYSQL,比听起来更软或可配置的

java - 如何删除 spring-data-jpa 中多边的项目?

mysql - 结果集包含一行的每个不同实例的一列。对于mysql中的每个like结构

amazon-web-services - 如何加密并安全存储和传输SSH私钥

php - 如何显示数据库中与特定用户不是 friend 的用户列表

mysql - 如何将 Access 子窗体的显示限制为 10?

php - 为了安全和统计需要记录什么?

php - 从数据库中获取表上方的名称列

javascript - 使用 Coldfusion 加密数据表服务器端响应

使用 md5 key 的 iOS 3DES 加密