你的Api接口上鎖了嗎?

職責單一化,各司其職,後端只負責Api接口編寫提供給各種不同類型的客戶端去調用,但是客戶端和服務器端調用是要有權限限制的,不能任何一個客戶端都可以隨便調用我們的接口(這裡面的緣由相信大家都知道吧,當然我就默認你們都知道),再者我們都知道http是明文傳輸,被抓包可可以修改相應參數,當然如果你使用了https就相對安全了不少!

你的Api接口上鎖了嗎?

舉一個很簡單的栗子,微信的接口大家都調用過吧,當然肯定有沒調用過的,沒關係,沒有調用過的人也是能明白我接下來要講的事情:微信會有一個sign的簽名,就是思夢php上面所說的權限認證機制了

下面思夢php給大家講的只是其中的原理,我們可以根據所講知識繼續擴展,完善成為你自己的一套程序。

主要使用的工具:thinkphp5/PHP

(1)首先客戶端和提供服務的服務器加密方式要一致AES、MD5都可以

(2)規定好參數

下面的程序是規定了三個參數:version(api的版本)、time(請求時間)、sign(加密好的簽名)

當然這些參數我們可以根據你的實際代碼業務而定,不一定設置一樣,本次程序的參數是設置在header頭裡面進行傳輸,為了和body裡面的業務參數區分開來,當然這裡也可以不一致,根據你的業務而定

注意點:客戶端和服務端時間不一致的問題,我們要在服務器提供一個時間的方法來驗證時間的有效性

你的Api接口上鎖了嗎?

接下來就是我們在一個入口文件裡面去定義一個驗證的方法,保證我們接口的安全性

你的Api接口上鎖了嗎?

你的Api接口上鎖了嗎?

以上就是代碼的示例:

(1)首先定義了一個BaseController

(2)定義一個構造方法,觸發驗證機制

(3)在驗證方法裡面獲取header信息,進行加密驗證,如果第一次方法將該sign作為鍵值緩存起來並設置有效期,保證請求的唯一性

(4)之後判斷限制請求的時間,如果超時將拋棄此次請求

當然這是在http上面做的一些操作,如果使用了https已經相對安全多了!

以上只是一個拋磚引玉,小夥伴可以自己再去完善


分享到:


相關文章: