2014-06-05 169 views
1

我需要用在ASP.NET MVC應用程序中刷卡的物理卡支付信用卡支付。用ASP.NET MVC信用卡支付(刷卡,刷卡)

最簡單的方法可能是簡單的「鍵盤 - 楔形」滑動(USB現在的日子),以便軌跡數據作爲鍵盤輸入發送到密碼類型的輸入字段。

我有一些安全問題用這種方法,雖然:

  • 如果他們刷卡當光標是在錯誤的現場,全程跟蹤數據顯示在清晰的文本。
  • 沒有端到端的加密(卡片數據在內存/瀏覽器緩存中以明文形式存在),並且可以通過鍵盤嗅探器抓取。
  • 完整的軌道數據必須發送到服務器,從它將被髮送到任何支付網關。當然,在這兩種情況下都是SSL,但是這會將Web服務器添加到攻擊面。與客戶直接與支付處理器進行交互可以避免這種情況(如果可行),這樣只有被屏蔽的卡#+授權號或令牌等才能夠到達服務器。

我有可能是更好的選擇一些想法,但我不知道他們是可行的:

  • ,與PC直接會談付款處理器和集成不知何故一個獨立的信用卡設備與ASP.NET應用程序。也許是一個信用卡設備,它監聽TCP端口,ASP.NET應用程序可以通過它與客戶端通信。或者通過USB連接,並通過瀏覽器插件或類似方式進行交互。
  • 一個小型的iframe或類似的使用付款處理器的「支付小工具」直接
  • 使用USB刷卡(儘管嗅探)+一些客戶端庫直接與支付處理器進行交互。

我正在尋找一些好方法(可靠和安全)的反饋和想法來實現這一目標(我計劃也聯繫一些支付處理器,看看我能從中找到什麼)。

謝謝。

回答

0

我已經聯繫了好幾個支付網關和信用卡刷卡公司,這裏是實現終端到終端的加密信用卡刷卡在ASP.NET應用程序相當簡單的方法:

1)使用刷卡像IDTech IDRS系列刷卡(鍵盤楔型 - 不是HID):http://www.idtechproducts.com/download/swipe-readers/doc_download/166-user-manual.html

2)發送刷卡處理器/網關,將他們的加密密鑰注入設備。

3)正確配置刷卡後,它會發送高度加密的滑動數據作爲鍵盤輸入,然後您可以從客戶端JavaScript傳遞到服務器,然後服務器將其發送到支付網關,解密和處理數據。輕掃也會發送未加密的數據的某些部分(例如卡號的第一個和最後四位數字)。

2

由於磁條實際上已過時,因此您的擔心是有效的。在美國這是常見的,但在其他國家,信用卡使用智能芯片,提供增強的安全性,防止克隆磁卡。

但是有符合PCI-DSS的磁卡讀卡器,它將使用3DES加密數據,並且還會提供設備/主機驗證。這些設備將允許您繞過嗅探,使用HID模式而不是鍵盤仿真,這允許與設備直接通信。

當通過讀卡器刷卡時,軌道數據將是使用DUKPT(派生的獨特密鑰每次交易)密鑰管理加密的TDEA(三重數據加密算法,也稱爲三重DES)。這種密鑰管理方法使用基礎派生密鑰對密鑰序列號進行加密,從而生成初始加密密鑰,並在部署之前將其注入閱讀器。每次交易後,加密密鑰都會根據DUKPT算法進行修改,以便每筆交易使用一個唯一的密鑰。因此,數據將使用每次交易的不同加密密鑰進行加密。

其他替代品,我真正喜歡的是附加到音頻插孔上的智能手機。就像Square設備一樣,您一定看過或聽過過。它們具有TDAE和DUKPT的相同原理,但將數據調製爲由App解調的聲音。

如果您計劃接受信用卡作爲「存在卡」,則需要此安全步驟。如果您確定「卡片不存在」,您可以捕獲跟蹤數據並將其發送給支付網關。支付網關不知道該卡是否真的存在,或者您是否手動輸入信息。如果您想擁有「存在卡」功能,支付網關將要求您使用PCI認證設備。

而關於ASP.NET MVC,這是不可能的,這必須是客戶端應用程序或軟件,纔能有端到端的加密。

+0

這是一個ASP.NET應用程序,但它可以與執行「滑動通信」的本地軟件組件(ASP.NET客戶端通過某個端口上的本地主機與組件通信)進行組合。或者可以使用TCP/IP(安全地)從客戶端進行交互的網絡滑動設備。我想我最好的選擇是與支付處理器覈對以找出可用的東西... –