【问题标题】:Best way to store sensitive data存储敏感数据的最佳方式
【发布时间】:2012-05-10 16:21:48
【问题描述】:

存储敏感数据(例如:信用卡)的最佳方式是什么?我需要能够得到原始文本,所以我不能散列它。我有一些想法。

  1. 将 MySQL 与 AES_ENCRYPT()AES_DECRYPT() 一起使用

  2. 使用fwrite()将其加密存储在文件中

现在我知道 MySQL 的加密和解密功能并不安全,我可以在 PHP 中使用任何简单、快速和安全的加密吗?

【问题讨论】:

  • 不是编程答案,但是当涉及到信用卡信息时,您几乎总是希望其他人处理它(因此您无需承担责任)。
  • @BrendanLong 完全正确。在几乎所有情况下,“我应该如何存储信用卡”的答案都是“不要!”。
  • 我知道,虽然我正在开发的网站会非常棘手。

标签: php mysql file store


【解决方案1】:

不要在您的服务器上存储信用卡号码!在您的数据库中拥有这些信息会使您成为黑客极具吸引力的目标。如果你认为你可以保护它,再想一想。黑客已经击败了具有出色安全性的公司的安全性。您的安全不会更好。

您最好的选择是使用Authorize.Net's Customer Information Manager (CIM) 之类的服务,该服务允许您在他们的服务器上创建付款配置文件(即他们存储信息),然后收取费用。这样您就可以在需要时向客户收费,而不必存储他们的信用卡信息。

如果您坚持自己做,则必须遵守in this guide 概述的 PCI 规则。但是您可能会发现this guide 更容易理解。前往第 14 页了解您需要了解的内容。基本上您可以存储它,但必须根据 PCI 标准对其进行加密。

仅供参考,您的服务器和网络也必须是安全的。如果任何一块拼图不符合 PCI 标准,您将无法存储信用卡号。这排除了大多数共享托管公司作为解决方案。

【讨论】:

  • 我想我还是找第三方来处理吧。
  • Bcrypt 进行散列而不是加密,因此它对信用卡没有用处。
【解决方案2】:

通常,您存储卡号的唯一原因是订阅/定期付款。您会发现优秀的支付服务提供商会提供一个令牌来存储而不是卡详细信息,然后您只需将其再次推送给他们。

查看 PHP mcrypt 库,但如果您确实需要加密/解密卡号并记住,永远不要在任何地方存储 3 位安全代码。曾经。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-04-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-27
    • 1970-01-01
    • 2014-05-25
    相关资源
    最近更新 更多