2010-09-22 98 views
10

我正在使用MySQL的Linux服務器上的PHP工作。收集信用卡信息 - 不收取付款

我有一個要求(我試圖說服他們退出)從用戶那裏收集信用卡信息,以便我們公司可以使用卡號來存放會議的酒店房間。我們根本不會自己收費,而只是將它們發送到酒店。然後,我需要能夠下載一個CSV文件,並且每次有人註冊一封電子郵件以便將所有信息發送給管理員。

我試圖解釋這是不安全的,但其他幾位開發人員在我工作之前曾爲他們做過這件事。

我的問題是;無論如何,這是安全的嗎?如果沒有,有任何第三方的選擇,使這種情況發生?


編輯:

我感謝大家誰也發佈至今,它簡直讓我想嘗試做到這一點越來越少。如果你可以給你的答案添加簡單的解釋,面向非技術人員,這將不勝感激,實際上網站的來源和鏈接將幫助我很多。我還沒有發現任何可以用非技術手段解釋這一點的網站。

+0

Jan的答案讓我覺得你應該檢查你的地區法律,以確保他們希望你做的事情不違法。 – Daenyth 2010-09-22 14:41:15

+0

我給每個人+1回覆,謝謝 – Nicknameless 2010-09-23 15:03:32

回答

7

存儲卡的詳細信息真的不好。您正在以PCI-DSS審計的形式開啓自己的世界。它不像'使用加密'那麼簡單,您需要有適當的流程來安全地管理加密密鑰,安排密鑰輪換,安全地登錄訪問等等......存儲卡的細節絕對是您想要避免的事情。

如果您的有適當的地方,那麼最好的選擇可能是您(作爲公司)從您的信用卡付款到您自己的商戶帳戶,然後單獨支付酒店(從您的銀行賬戶/其他)。您代表客戶向酒店支付款項。

大多數支付網關都允許您安全地存儲卡的詳細信息,並在稍後的日期(使用由網關返回的令牌標識)進行收費,這在此可能很有用。但是,您無法以任何方式檢索卡片詳細信息以傳遞給酒店,這就是爲什麼您需要付款,然後單獨付款給酒店。

儘管採用這種簡化的解決方案,PCI-DSS的許多領域仍將發揮其作用。

你問,所以這裏是詳細信息:

PCI-DSSPayment Card Industry Data Security Standard.這是一組的,基本上適用於任何公司,「觸摸」持卡人數據,特別是卡號準則。從字面上理解它意味着對數據的任何處理,即使只是讓它通過網絡,而不會永久保存到磁盤,也足以強制您遵守(儘管如果您不將詳細信息保存到磁盤)

您尚未說明您所處的世界的哪個部分,或者如何捕獲這些卡細節(互聯網/電話/本人)。這些細節對於如何達到合規性很重要。

首先看看PCI-DSS SAQ (Self Assessment Questionnaires)。這些SAQ是不將持卡人詳細信息存儲到磁盤上的公司的最低要求,並且應該給出在整個網絡中需要實施的安全性以及應該在整個公司應用的策略的良好印象。

正如我所說,如果你想存儲卡的細節,那麼事情會變得更加複雜,因爲通常情況下,SAQ不夠好。您需要註冊QSA(合格安全評估師)的協助,他們將訪問數據存儲的最佳實踐以及各種其他要點。對於這一級別的合規性,您需要查看年度審計(由QSA執行)和季度網絡掃描。看看audit procedures以詳細瞭解涉及的內容。特別看看第3節,不要低估implementing proper key management的難度。

總之,全面的PCI合規性將會非常昂貴。即使對於已經有已有具有相當強大的安全策略的公司來說,引入QSA並單獨運行季度掃描和年度審計的成本可能會高達數千美元。

1
  1. 確保服務器儘可能爲安全和證明它是不是已經受損。如果您的服務器遭到入侵,這一切都不會真正奏效。

  2. 在運輸過程中使用SSL保護此信息

  3. 收到後立即加密這些細節。這將有助於保護它靜止。如果可能,請使用您的服務器上私鑰(用於解密)爲而非的密鑰對的公鑰對其進行加密。這可能很容易,因爲您將這些信息放入您需要發送的電子郵件正文中,然後使用公鑰加密對您的客戶端進行私鑰加密。 (你可以在這裏使用PGP)。通過這種方式,數據在服務器上的幫助儘可能簡短,然後一旦離開服務器,只能由客戶端訪問。如果您使用對稱加密算法,那麼您的密鑰也必然會位於服務器的某處(磁盤,內存等),攻擊者可以獲取並使用這些密鑰重新獲得詳細信息。

這不是背書,本身,而是我已經收到了良好效果類似的情況下使用此之前:http://www.pgp.com/products/commandline/

記住,總有一些安全漏洞,但你會養用這些步驟抵禦攻擊的大屏障。我還可以補充一點,您可以從服務器的立即構建中查看諸如Trip Wire之類的系統完整性解決方案。當然,確保你的所有密碼都很強大。

7

這是非常不安全的,我認爲你反對它是正確的。那說...

一些想法:

  • 酒店可以給你一個速度/組代碼,您可以直接傳播到你的用戶?也許你甚至可以給他們一個鏈接,直接進入酒店的預訂頁面,代碼已經填好。

  • 甚至不要考慮實現這個,除非你可以在支持SSL的網站上實現。

  • 不要將CC號碼保存在任何地方, 只需生成電子郵件並將 號碼退出。這可以減輕您不必擔心大量非常困難的應用程序/服務器安全問題。

  • 使用GPG或 等效加密電子郵件,以便在 傳輸中對其進行保護,並且只能由預期收件人閱讀。

4

我建議您至少密切關注卡片行業PCI合規性。 Here是一個PDF文檔。

1

如果通過電子郵件發送文件,請務必在發送和接收計算機上使用安全連接(基於SSL的HTTPS/IMAP或POP3,基於SSL的SMTP),並在發送前對文件進行加密。您也可以通過OpenPGP加密您的郵件和附件。另外,請確保兩臺郵件服務器之間的安全性(發送和接收),或者僅使用相同的域來發送和接收電子郵件地址。請勿使用ZIP文件或相關容器的密碼功能,因爲它們通常密碼較弱。 如果你在文件系統上發送它(例如USB pendrive),一定要使用一個加密的文件(即TrueCrypt)。

一定要有一個安全的計算機,下載和上傳參與(下載/上傳發生的加密分區,沒有系統間諜軟件,密碼系統,防火牆)。

+1

發送未加密的文件是不安全的,甚至通過SSL的SMTP。您無法知道郵件服務器如何將郵件傳輸到接收服務器。 – 2010-09-22 14:49:02

+0

謝謝,我認爲他使用的是相同的郵件服務器和域。 – Soravux 2010-09-23 19:37:29

2

作爲一個像這樣的系統工作的人,以純文本格式存儲任何信用卡信息是100%非法的。您必須對所有數據進行加密,並且不允許您知道任何密鑰。這是相當不錯的22,驗證數據的唯一方法是猜測聽起來很可悲。這是意外收費發生的確切原因。

2

正如其他人在這裏所說的,存儲信用卡信息需要您獲得認證纔是事實。您可以要求提供信息來處理交易,但將其保存在任何類型的存儲中是一個很大的禁忌。

幸運的網站像authorize.net,braintree.com,paypal。com等會讓你與他們的API進行交互,這樣你就可以爲每個想要進行交易的實體獲得一個「Customer Vault ID」。

這些第三方以100%合法的方式存儲所有敏感信息。而且,只要您想使用他們保存的信息進行交易,就可以使用他們的「Vault ID」與服務進行交互。

我用過authorize.net,BrainTree和PayPal。最近它是BrainTree並且與他們取得了一些成功。除非您需要品牌認可,否則我不會推薦PayPal,或者您只是想直接轉賬,以避免向他們索要任何類型的賬戶信息(因爲他們已經在PayPal中輸入)。