1. 程式人生 > >用最簡單方法解決api介面安全問題,幾乎無法破解

用最簡單方法解決api介面安全問題,幾乎無法破解

場景描述

專案需要為第三方提供api服務介面。介面涉及到核心功能,如何保證介面安全。防止偽造身份、篡改資料?

思路

保障資料安全最好的方法,當然是加密了。無法解析內容,自然無法偽造,篡改。

可是使用https證書需要收費的。有其它方法麼?

有的。

訊息雜湊認證(hmac)。

演算法描述

  • 訪問者
1. 當訪問介面時, 將引數按key值排序,組成key1=value1&key2=value2&....&secret_key=...
2. 然後對上面結果做md5,生成簽名sign
3. 將sign放到加入請求的引數
  • 被訪問者
金鑰是被訪問者提供了,它也有訪問者的secret_key.
1.根據app_id查到secret_key
2.處理請求引數,按規則組成key1=value1&key2=value2....&secret_key=...
3.對上一步結果做md5,生成sign。比較兩個sign,相等則身份驗證通過

效果

  1. 金鑰只存在雙方機器上,不可能被擷取
  2. 簽名無法偽造,同樣身份無法偽造、訊息無法被篡改

使用了hmac認證,介面被破解基本是不可能的

python實現

import md5

app_id=123
secret_key="xxxxxxxx"
request_param = dict( key1="value1", key2="value2", key3="value3" ) def sign(): params = ["%s=%s" % (key, value) for key, value in sorted(request_param.items(), key=lambda item: item[0])] params.append("secret_key=%s" % secret_key) str_param = "&".join(params) print
str_param md = md5.md5() md.update(str_param) return md.hexdigest() if __name__ == '__main__': print(sign())

來源
用最簡單方法解決api介面安全問題,幾乎無法破解

此生必看的科學實驗-水知道答案
《了凡四訓》詳解之改過之法
印光大師十念法(胡小林主講第1集)
精神病為什麼治不好
百病之源