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

2021-09-06 07:05:21 字數 1387 閱讀 5939

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

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

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

有的。訊息雜湊認證(hmac)。

1. 當訪問介面時, 將引數按key值排序,組成key1=value1&key2=value2&....&secret_key=...

2. 然後對上面結果做md5,生成簽名sign

3. 將sign放到加入請求的引數

金鑰是被訪問者提供了,它也有訪問者的secret_key.

2.處理請求引數,按規則組成key1=value1&key2=value2....&secret_key=...

3.對上一步結果做md5,生成sign。比較兩個sign,相等則身份驗證通過

金鑰只存在雙方機器上,不可能被擷取

簽名無法偽造,同樣身份無法偽造、訊息無法被篡改

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

import md5

123secret_key=

"******xx"

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]

)]"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集)

精神病為什麼治不好

百病之源

aspx 到 html 最簡單方法

using system using system.data using system.configuration using system.collections using system.web using system.web.security using system.web.ui usin...

VB連線SQL最簡單方法

public conn as adodb.connection public rs as adodb.recordset public addflag as boolean 宣告部分 public function opencn byval cip as string,byval users as ...

api介面加密 如何解決API介面開發安全性呢?

如今各種api介面層出不窮,乙個api的好與不好有很多方面可以考量,其中 安全性 是乙個api介面最基本也是最重要的乙個特點。尤其是對於充值繳費類的api介面來說,如話費充值api介面 流量充值api介面 遊戲q幣充值 水電煤繳費介面等,安全與否直接影響到個人或企業的財產,所以做好的api介面安全性...