1. 程式人生 > >淺談網路支付加密安全流程思路(安全性極高)

淺談網路支付加密安全流程思路(安全性極高)

在闡述我的思路之前,我們先了解以下幾點。

一、公網不安全

如果我們使用公網上網,我們的ip是由公網發放的。當我們併發送請求時,公網的擁有者可以在路由端設定攔截器,以此來對你向伺服器傳送的資料進行攔截,從而對你的資料進行修改來達成某種意圖(如果客戶端的加密足夠好,那麼風險會小很多) 。而伺服器返回給客戶端的資料同樣可以被攔截。

若使用我們自己的移動流量上網,我們手機在一個城市的ip地址是固定的,並且ip是由移動公司路由端進行分配的,可以說風險是相當小的。

而當我們連線A熱點上網時,我們的ip是由A的ip分發的子網ip地址,如果A在他的手機上設定攔截器的話,依舊會對我們造成一定的威脅。

二、對稱加密:檔案加密和解密使用相同的金鑰加密

三、非對稱加密:公開金鑰與私有金鑰是一對,如果用公開金鑰對資料進行加密,只有用對應的私有金鑰才能解密;如果用私有      密 鑰對資料進行加密,那麼只有用對應的公開金鑰才能解密。因為加密和解密使用的是兩個不同的金鑰,所以這種演算法叫作非對稱加密演算法。

四、MD5:它是一種資訊摘要演算法,它可以從一個字串或一個檔案中按照一定的規則生成一個特殊的字串(這個特殊的字串就被稱之為摘要),並且一個檔案所對應的MD5是固定的,當檔案內容變化後,其MD5值也會不一樣(雖然理論上來說也有可能會一樣,但概率極小)。因為MD5不可解密的特性

,所以我們常將接收到的資料轉MD5與原MD5進行比較判斷是否被人篡改。

 

加密流程思路

一、防止被中途攔截資料進行惡意操作

最開始我想使用對稱加密技術,但是對稱加密的資料多次傳送,也容易被研究出一定的規律,從而可以被黑客在不破壞加密資料原有的規律性的前提下,對實際資料進行修改。

而非對稱加密技術因為可以被解密,依然有規律可循,存在風險。

這時,我們想到用MD5判斷是否被篡改。

1.伺服器向客戶端傳遞公鑰,客戶端用公鑰進行加密。(若被攔截修改,那麼加密產生的字串發生改變,自然無法用金鑰進行相應的解密)

2.客戶端將原字串轉換為MD5摘要,和公鑰加密生成的字串一起返回伺服器。

3.伺服器將接收到的字串用金鑰進行解密生成A字串,再將A字串按照MD5規則轉換成B字串,最後將B字串與客戶端傳遞過來的MD5進行比對,若相同,則資訊未被修改。

二、防止被惡意多次提交

1.我們先用攔截器直接攔截,比如說若每秒提交次數超過十次以上,則判斷為惡意攻擊,進行攔截。

2.首先我們要知道,在我們開啟支付頁面時,客戶端往瀏覽器傳遞了一個訂單號,存在Redis當中。若有兩個相同的支付請求同時到達,則選擇其中之一。該請求響應成功後,清除剛剛儲存的訂單號,而之後到來的支付請求因為沒有對應的訂單號,則無法繼續進行操作。而支付頁面若遲遲沒有支付,或者支付頁面關閉,訂單號過一段時間後也會自動清除。