2013-09-27 98 views
1

我正在爲我的組織建立支付網關。不同的應用程序將能夠將數據發佈到網關以初始化事務。其中一些數據將是2個賬戶代碼和美元數量。支付網關:需要信息散列嗎?

現在我的想法已經轉向安全。我擔心最終用戶能夠在途中更改POST信息,以最終減少支付或將資金存入錯誤的賬戶。爲了解決這個問題,我正在考慮添加應用可以通過的散列。

我在想每個預期的主機都會有一個唯一的密鑰。隨着他們的數據,他們可以發送散列號碼 隨機鹽+他們的密鑰+ 2個賬戶代碼+美元金額,以及發送他們的隨機鹽。在支付網關上,我可以使用他們傳遞的信息+唯一密鑰重新生成散列,以查看數據是否已被更改。

這是否足夠?我的理論有什麼問題嗎?

+0

是否有任何理由不能使用'$ _SESSION'來達到這個目的? – Elen

+0

你沒有提到加密。您是否使用SSL進行這些通信?如果是這樣,請確保將其添加到問題中。 – webbiedave

+0

@webbiedave:是的,所有通信都在https上。我不明白這有什麼相關性 - 我試圖保護從最終用戶瀏覽器發送的信息的完整性,而不是阻止中間人 – Pickle

回答

1

這基本上是paymentserviceproviders使用的。訣竅是「鑰匙」是私人的,所以它不是你在帖子中發送的東西之一。你和發件人做同樣的散列,只要它們相同,就沒有篡改。

銀行使用的另一種選擇是將付款與郵政分開:從實際知道價格的地方(服務器?)生成支付請求並將該號碼傳達給客戶。然後讓他們使用此號碼與您的支付網關進行通信,而不是讓他們過帳任何金額。不會有篡改。

第一個選項是由我知道的幾個支付提供商使用,第二個是我們目前直接與我們的銀行使用的。

爲了增加私人信息的安全性,讓結果也包含你知道的哈希值,所以當某人(用戶?)要求「感謝付費」頁面時,實際上可以檢查它是否是該組織的用戶。

+0

您能否詳細說明銀行流程?我有點不清楚。我的過程如何工作(或計劃工作)。第三方應用程序生成並自動向支付網關提交HTML表單。支付網關接受數據,記錄交易,生成另一個表單並自動提交給我們的支付處理器。我可以使用最終付款處理器驗證交易,但我想使用散列來驗證發送到付款網關的數據。 – Pickle