2012-05-01 69 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位數的安全碼。永遠。