簽名參數Sign生成方法:
1.將所有的參數通過字母升序排序
2.將排序後的參數按(keyvalue)的方式拼成一個字符串,把請求參數中的&轉換成''.
3.把和服務端約定好的驗證密鑰key放到拼接好字符串的前面,然後MD5 32位加密並轉成大寫
例如:
假如請求的數據是
http://www.xxx.com/controller/interface?sign=sign_value&p=v1&c1=n3&method=queryXXX&f3=vn(實際情況最好是通過post方式發送),其中sign參數對應的sign_value就是簽名的值。
(1)拼接字符串並升序排序,c1=p3&f3=vn&method=queryXXX&p=v1
(2)參數名和值的拼接:c1p3f3vnmethodqueryXXXpv1
(3)把和服務端約定好的驗證密鑰key,比如和服務端約定的驗證密鑰key是key9a8bc7。就得到新的字符串key9a8bc7c1p3f3vnmethodqueryXXXpv1
(4)將得到新的字符串key9a8bc7c1p3f3vnmethodqueryXXXpv1進行md5加密計算,然後轉爲大寫,得到的這個值就是sign_value簽名值。
注意,計算md5之前請確保接口與接入方的字符串編碼一致,如統一使用utf-8編碼或者GBK編碼,如果編碼方式不一致則計算出來的簽名會校驗失敗。
當然了還有通過代理服務攔截的,客戶端在請求時先訪問代理服務器驗證通過後在請求主機訪問。
一些其它方式防篡改方法如下:
(1)設置客戶端IP黑白名單
(2)請求參數Sign簽名
(3)請求方式換成Https