示意圖
原理
從圖中可以看得很清楚,前台想要呼叫介面,需要使用幾個引數生成簽名。
時間戳:當前時間
隨機數:隨機生成的隨機數(最好是唯一)
私鑰:服務端分配給前端的私鑰(附帶的還會有乙個公鑰,公鑰作為請求引數傳給服務端)
演算法規則:商定好的運算規則,利用演算法規則生成乙個簽名。
前台生成乙個簽名,當需要訪問介面的時候,把時間戳,隨機數,公鑰,請求引數,簽名傳遞到後台。後台拿到這些資料之後,通過一樣的演算法規則計算出簽名,然後和傳遞過來的簽名進行對比,一樣的話,返回資料。
演算法規則
簽名步驟一:拼接獲取到的引數,並按字典序排序引數,得到乙個string
簽名步驟二:在string後加入key=私鑰
簽名步驟三:md5加密
簽名步驟四:所有字元轉為小寫
/*** 作用:生成簽名
* @param array $params
* @return bool
*/public function getsign($params = array())
//相容rfc 3986 urlencode相容
PHP開發api介面安全驗證
目錄 在實際工作中,使用php寫api介面是經常做的,php寫好介面後,前台就可以通過鏈結獲取介面提供的資料,而返回的資料一般分為兩種情況,xml和json,在這個過程中,伺服器並不知道,請求的 是什麼,有可能是別人非法呼叫我們的介面,獲取資料,因此就要使用安全驗證。從圖中可以看得很清楚,前台想要呼...
PHP開發api介面安全驗證
隨機數 隨機生成的隨機數 口令 前後臺開發時,乙個雙方都知道的標識,相當於暗號 演算法規則 商定好的運算規則,上面三個引數可以利用演算法規則生成乙個簽名。然後拼接成字串 進行sha1加密 再進行md5加密 轉換成大寫。curl模擬get請求。隨機生成字串 private function creat...
PHP開發api介面安全驗證
在實際工作中,使用php寫api介面是經常做的,php寫好介面後,前台就可以通過鏈結獲取介面提供的資料,而返回的資料一般分為兩種情況,xml和json,在這個過程中,伺服器並不知道,請求的 是什麼,有可能是別人非法呼叫我們的介面,獲取資料,因此就要使用安全驗證。從圖中可以看得很清楚,前台想要呼叫介面...