1. 當有內部系統之間進行調用的時候,也需要簡單的進行一下調用方的驗證,一種簡單的內部接口加密驗證方式.此加密方式需要三個參數,分別是api地址,pin碼,entry標識,其中pin和entry是接口雙方約定的兩個參數.
舉例說明:
service_api="/1/service"
pin="6879hsdhj4323nmn32j3jn23n44j"
entry="entadmin"
2. GET請求:
https://i.api.test.com/1/service?s2={sign}&entry={entry}&myname=taoshihan&uid=1
變量sign的生成規則如下:
api地址為 "/1/service"
args參數為 array("myname"=>'taoshihan',"uid"=>1);不包含s2和entry
method為 "GET"
pin為 "6879hsdhj4323nmn32j3jn23n44j"
makeInternalApiSign($api, $args, $method, $pin) { ksort($args); $ls = array(); foreach ($args as $k => $v) { if (is_array($v)) { $ak = sprintf('%s[]', $k); foreach ($v as $i) { $ls[] = sprintf("%s=%s", rawurlencode($ak), rawurlencode($i)); } } else { $ls[] = sprintf('%s=%s', rawurlencode($k), rawurlencode($v)); } } return hash_hmac('sha1', sprintf('%s:%s?%s', $method, $api, implode('&', $ls)), $pin); }
這個加密規則可以有效的約束接口參數數據,防止增刪篡改參數,防止隨意變更接口地址