2012-07-31 55 views
2

我正在處理信用卡處理器腳本(由處理器提供),它接收各種信用卡數據和商家帳戶數據,獲取cURL並解析返回XML爲交易狀態。PHP cURL - 處理信用卡交易時的安全

代碼:

define("CURL_PROCESSING_URL", "https://ideposit.vbprograms.net/servlet/pg"); 

$params = "Merchant_User_Name=" . "vitale" . 
      "&Merchant_Password=" . "test" . 
      "&Tracking_Number=" . "00001" . 
      "&Credit_Card_Number=" . "4012888888881" . 
      "&Credit_Card_Exp_Date=" . "1205" . 
      "&Charge_Amount=" . "12.00" . 
      "&AVS_Street=" . "8320" . 
      "&AVS_Zip_Code=" . "85284" . 
      "&CV_Security_Code=" . "999" . 
      "&Credit_Card_Type=" . "MC_CARD_VISA" . 
      "&CardHolder_Name=" . "test Card Holder"; 

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, CURL_PROCESSING_URL); 
curl_setopt($ch, CURLOPT_POST, 1); 
curl_setopt($ch, CURLOPT_POSTFIELDS, $params); 
curl_setopt($ch, CURLOPT_VERBOSE, 1); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); 
$returned = curl_exec($ch); 
curl_close($ch); 

$p = xml_parser_create(); 
xml_parse_into_struct($p, $returned, $vals, $index); 
xml_parser_free($p); 

問題:

1)是否SSL_VERIFYPEER被設置爲false,使其更容易被欺騙服務器和被截獲的交易數據?

2)cURL URL和關聯的POST值是否存儲在服務器日誌中或以純文本格式傳輸?

3)是否有更安全的方式或一組選項來執行此交易?

+0

正如一個側面說明。 'https:// ideposit.vbprograms.net'沒有有效的證書,設計非常糟糕和過時的網站,他們沒有提供任何關於他們業務的識別信息。在使用他們的服務之前,我會考慮三次。 – Adi 2012-07-31 20:51:40

+0

雖然我同意你的想法,但客戶仍然堅持要求這家供應商,甚至根據我的警告。 「正確」的網站應該是ideposit.net,但他們要求我們通過vbprograms.net子域傳遞所有API調用。 很奇怪。 – 2012-07-31 20:53:30

回答

2

我想在生產環境中,您會希望使用默認值CURLOPT_SSL_VERIFYPEER = true。這驗證了SSL證書是有效的。對於測試或開發環境,處理器可能會爲您提供一個沙盒來處理可能有自簽名證書或過期或類似證書的問題,您可能會認爲這是錯誤的。

您正在使用SSL,因此數據不會以純文本格式發送。不知道你有什麼樣的錯誤記錄,很難說它是否會存儲在服務器日誌中。

cURL完全可以做你正在嘗試做的事情,假設你總是使用SSL並且你沒有記錄敏感數據。