2012-05-01 67 views
1

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

  1. 使用MySQL AES_ENCRYPT()和使用fwrite()

现在我知道,MySQL的加密和解密功能是不安全AES_DECRYPT()

  • 储存于一个加密的文件,没有任何我可以在PHP中使用简单,快速和安全的加密?

  • +1

    不是一个编程答案,但是当涉及到信用卡信息时,你几乎总是希望别人来处理它(所以你不承担责任)。 –

    +1

    @BrendanLong是完全正确的。在几乎所有情况下,“我应该如何存储信用卡”的答案是“不要!”。 – ceejayoz

    +0

    我知道,虽然我正在研究的网站会非常棘手。 –

    回答

    7

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

    最好的办法是使用像Authorize.Net's Customer Information Manager (CIM)这样的服务,它允许你在他们的服务器上创建付款资料(即他们存储信息),然后你对此收费。这样,您可以在需要时向客户收费,但不必存储他们的信用卡信息。

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

    仅供参考,您的服务器和网络也必须安全。如果任何难题不符合PCI标准,则不能存储信用卡号码。这就排除了大多数共享托管公司作为解决方案。

    +0

    我想我会得到第三方来处理它。 –

    +1

    Bcrypt不会加密,因此对信用卡无用。 –

    +0

    我脑海里总有脑瘫。删除。 –

    3

    通常情况下,您存储卡号的唯一原因是订阅/经常性付款。你会发现,良好的支付服务提供商提供一个令牌来存储而不是卡的细节,然后你再次推给他们。

    看看PHP mcrypt库,虽然如果你确实需要加密/解密卡号并记住,永远不会在任何地方存储3位数的安全码。永远。