你的api上鎖了嗎?

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


  舉一個很簡單的栗子,×××的接口你們都調用過吧,固然確定有沒調用過的,不要緊,沒有調用過的人也是能明白我接下來要講的事情:×××會有一個sign的簽名,就是思夢php上面所說的權限認證機制了thinkphp

  下面思夢php給你們講的只是其中的原理,咱們能夠根據所講知識繼續擴展,完善成爲你本身的一套程序。後端

  主要使用的工具:thinkphp5/PHPapi

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

  (2)規定好參數安全

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

  固然這些參數咱們能夠根據你的實際代碼業務而定,不必定設置同樣,本次程序的參數是設置在header頭裏面進行傳輸,爲了和body裏面的業務參數區分開來,固然這裏也能夠不一致,根據你的業務而定ide

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


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



  以上就是代碼的示例:

  (1)首先定義了一個BaseController

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

  (3)在驗證方法裏面獲取header信息,進行加密驗證,若是第一次方法將該sign做爲鍵值緩存起來並設置有效期,保證請求的惟一性

  (4)以後判斷限制請求的時間,若是超時將拋棄這次請求

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

  以上只是一個拋磚引玉,小夥伴能夠本身再去完善

相關文章
相關標籤/搜索