2010-06-08 138 views
35

在我的國家,網上支付並不是一件古老的事情,我第一次看到一個直接向當地銀行帳戶支付款項的網絡應用程序是去年。將CreditCard信息存儲到數據庫中的最佳做法

因此,我是一個新手編碼網絡支付系統。

我的問題是,什麼是存儲的信用卡信息到數據庫中的最佳實踐...

我有很多想法:加密的信用卡,數據庫安全限制等

你做了什麼?

+18

作爲很多這樣的系統的用戶,我只是想說謝謝 – reuscam 2010-06-08 23:51:08

回答

73

不這樣做

涉及的風險太多太多,您通常需要進行外部審計,以確保您遵守所有相關的當地法律和安全實踐。

有很多第三方公司爲你做這件事,他們已經經歷了一切麻煩,確保他們的系統安全,符合當地法律等等。我在過去使用過的美國的一個例子是authorize.net。有些銀行還有一些系統可以用來存儲信用卡數據和處理付款。

我意識到你所在的國家可能沒有美國那樣嚴格的法律,但在我看來,這並不是推翻自己的藉口。當你處理其他人的錢時,風險太高而無法保證。

+0

我甚至認爲儲蓄信用卡號碼是非法的(荷蘭)。所以我們用************在xml-transaction-logs中混淆了數字。 – 2010-06-09 00:25:17

+0

這種方法的問題是,許多網站已經限制我的國家作爲信用卡的國家...即時通訊深入這種情況下,我會讓你知道,如果我可以做你的建議... – 2010-06-09 03:48:03

+0

@Garis :是的,我知道這取決於你的國家可能很難。我會試着問一些較大的銀行,因爲其中一些銀行也提供這種類型的API。 – 2010-06-09 04:35:13

2

加密加密加密。如果您不必絕對必須解密 - 不解密以顯示最後4位數字。不要解密告訴用戶他們的卡片是什麼。

事實上,如果可以的話,甚至不要將加密的卡號與其餘的用戶信息放在同一臺物理服務器上。

+0

謝謝,即時通訊也考慮要求CVV2(後三位數字代碼)每次登錄的用戶要支付任何費用產品... – 2010-06-08 23:57:56

+0

@Garis使用代碼的另一個好處是,一些支付網關將減少交易很少,你使用它。當我們轉而詢問安全代碼時,至少我們使用的銀行的交易成本更低。 – 2010-06-09 00:00:13

+2

@Garis Suero CVV2代碼不允許存儲。當您獲得CVV2(以及郵政編碼和其他信息)時,您的費率將會降低。通常情況下,您可能會收取幾種不同的費用,具體取決於是否是獎勵卡等。 – 2010-06-09 00:25:47

19

最低限度遵循PA DSS(付款申請數據安全標準)。更多信息可以在這裏找到:

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

而且這將是明智的,看看PCI DSS,它可以在這裏找到:

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

+2

* facepalm *,我很愚蠢不要馬上想到這一點。 您絕對應該看看PA DSS和PCI標準。 – dplass 2010-06-08 23:59:55

+0

這是非常豐富的...謝謝 – 2010-06-09 00:00:08

+0

這應該是被接受的答案。 – Alan 2014-02-14 18:26:18

31

爲此,我建議採用全面的分層方法。

首先,存儲信用卡信息應該是一個選項。其次,應使用強大的加密形式安全地存儲數據。我推薦使用256位密鑰的AES。確保在選擇密鑰時,使用整個密鑰空間(僅僅使用隨機生成的字母數字符號字符串作爲密鑰,這是一個菜鳥錯誤)。

第三,AES密鑰需要妥善保護。不要在代碼中嵌入值。如果您使用的是Windows,請考慮使用DPAPI。

第四,您將需要設置數據庫權限,以便應用程序和計算機將有權訪問需要了解的基礎。

第五,保護連接字符串到您的數據庫。

第六,確保任何有權訪問信用卡數據的應用程序都能正確保護它。

+0

AES沒有512位密鑰大小。 (可能是Rijndael,但不是AES實現)。 – PaulG 2010-06-09 06:45:08

+1

你說得對。該標準僅規定了最大256個密鑰的大小。然而,密鑰大小沒有實際限制。 – Alan 2010-06-09 08:22:27

+0

你知道一個好的地方將存儲密鑰在unix系統的位置嗎?由於加密與密鑰本身的安全性一樣好,我擔心如何保護它。 – Jason 2012-03-02 18:23:47

2

您應該避免存儲任何信用卡信息,因爲這會對您和您的客戶造成風險。

-2

我建議你用強大的算法(類似AES)和長密鑰加密卡號。

然後,將您的密鑰保存在類似外部硬盤或光盤的安全位置。 當您需要密鑰時,請使用外部硬盤。

如果您使用的是共享主機,則必須將您的密鑰存儲在外部設備中。

嚴格的數據庫

  1. 定義嚴格的用戶提供數據庫數據庫的
  2. 刪除root用戶如果不需要它。
相關問題