介面加密《二》: API許可權設計總結

來源:互聯網
上載者:User

標籤:

來源:http://meiyitianabc.blog.163.com/blog/static/105022127201310562811897/

API許可權設計總結:

最近在做API的許可權設計這一塊,做一次許可權設計的總結。

1. 假設我們需要訪問的API介面是這樣的:http://xxxx.com/openapi/v1/get/user/?key=xxxxx&sign=sadasdas&timestamp=2013-03-05 10:14:00&c=c&a=a&d=d

 

2. 介面調用的控制器:openapi/v1/get/user/

 

3. 步驟一:作為服務端,首先要檢查參數是否正確:key (使用者的key) ;sign(加密的簽名串) ;timestamp (請求的時間,服務端對請求有時間生效),這些參數如果有一個參數沒傳遞,肯定返回參數不正確的結果。

 

4. 步驟二:參數如果都傳遞正確,這個時候需要檢查API的白名單許可權,API也就是(openapi/v1/get/user/)是否存在在我們的資料庫中,一般會有一張API的資料表,如果調用的API不在我們的資料庫白名單中或者這個API已經關閉訪問了,那麼要返回禁止訪問的結果。

 

5. 步驟三: 如果API在白名單中,那麼現在就要檢查使用者的KEY是否正確了,服務端會有一張使用者權限表,這個資料表主要用來記錄使用者的key secret(密鑰) 以及API許可權列表,檢查這個使用者對訪問的API(openapi/v1/get/user/)是否有許可權,如果有許可權則通過,沒許可權則關閉。

 

6. 步驟四: 如果使用者權限通過,這個時候就到了最重要的一步,SIGN簽名的驗證。

簽名演算法:

加密方式 md5(POST參數(升序排序,除key sign參數除外) + 使用者密鑰) 

PHP密碼編譯演算法代碼:

 

[php] view plaincopyprint? 
  1. foreach ($p as $v) {  
  2.             $temp = explode("=", $v);  
  3.             $pArr[$temp[0]] = $temp[1];  
  4.         }  
  5. ksort($pArr);  
  6.         foreach ($pArr as $k => $v) {      
  7.             $pStr2 .= $k . $v ;  
  8.         }  
  9. md5($pStr2 . $secret)  

注意:加密的時候,需要將timestamp帶上,防止用戶端篡改。

用戶端,將自己需要傳遞的參數進行升序排序,然後加上自己key對應的密鑰(密鑰在服務端資料庫中有一份儲存,這個是不能對外公開的)進行MD5加密,通過參數sign傳遞到服務端。

服務端拿到sign值後,對傳遞過來的參數也進行同樣的演算法排序,並經過使用者的key查詢得到密鑰,然後進行一次密碼編譯演算法,得到的服務端的sign和用戶端傳遞過來的sign進行比較,如果相同則表示是可以通過的,如果中途有人篡改資料等,那麼最終加密出來的sign就是不一致的,這樣保證了使用者傳遞資料的可靠性和安全性。

 

7. 步驟五:檢查時間戳記時間,比較用戶端時間和服務端時間是否在10分鐘之內,如果10分鐘之外了,那麼返回逾時的提示,這樣能保證調用過的介面資料能在一定時間內銷毀掉。

 

8. 步驟六:調用相應邏輯

介面加密《二》: API許可權設計總結

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.