溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

你的api上鎖了嗎?

發(fā)布時間:2020-04-01 18:48:21 來源:網(wǎng)絡(luò) 閱讀:345 作者:思夢教育 欄目:web開發(fā)

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

你的api上鎖了嗎?


  舉一個很簡單的栗子,×××的接口大家都調(diào)用過吧,當(dāng)然肯定有沒調(diào)用過的,沒關(guān)系,沒有調(diào)用過的人也是能明白我接下來要講的事情:×××?xí)幸粋€sign的簽名,就是思夢php上面所說的權(quán)限認證機制了

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

  主要使用的工具:thinkphp5/PHP

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

 ?。?)規(guī)定好參數(shù)

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

  當(dāng)然這些參數(shù)我們可以根據(jù)你的實際代碼業(yè)務(wù)而定,不一定設(shè)置一樣,本次程序的參數(shù)是設(shè)置在header頭里面進行傳輸,為了和body里面的業(yè)務(wù)參數(shù)區(qū)分開來,當(dāng)然這里也可以不一致,根據(jù)你的業(yè)務(wù)而定

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

你的api上鎖了嗎?


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

你的api上鎖了嗎?


你的api上鎖了嗎?


  以上就是代碼的示例:

 ?。?)首先定義了一個BaseController

 ?。?)定義一個構(gòu)造方法,觸發(fā)驗證機制

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

 ?。?)之后判斷限制請求的時間,如果超時將拋棄此次請求

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

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


向AI問一下細節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI