[PHP] 內部接口簡單加密驗證方式


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);
}

 

這個加密規則可以有效的約束接口參數數據,防止增刪篡改參數,防止隨意變更接口地址


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM