亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

sign 簽名在客戶端怎么保證安全(ios,android,web)

sign 簽名在客戶端怎么保證安全(ios,android,web)

PHP
Cats萌萌 2018-08-05 14:09:38
S = key + url_encode(path) + T簽名 SIGN = md5(S).to_lower(),to_lower 指將字符串轉換為小寫; 一般會這樣簽名API接口開發時,如果考慮到接口的安全和參數不可串改,通常做法一般是吧參數通過 一定的算法簽名后把簽名的 sign 值一起發給服務端,這樣服務端也根據除去 sign 參數,把所有參數也經過簽名后,判斷客服端傳遞的 簽名是否匹配。這樣就解決了,但是有個問題,簽名算法基本都一樣,能做的就是簽名時加上一個 key 值,但是這個key值放在客戶端怎么保證安全呢。比如放在 web 端,js 代碼是直接可以看得,這樣肯定不安全,放在 android 上面貌似也不安全,因為 apk 是可以反編譯的。有小伙伴解決過這個問題的么?
查看完整描述

2 回答

?
紫衣仙女

TA貢獻1839條經驗 獲得超15個贊

首先要確定sign是干什么的。

sign的主要目的是保證數據的完整性,防止在網絡傳輸的過程中篡改數據。

name=kevinheight=170key=$$key$$

假如上面的數據簽名字符串是 name=kevin&height=170$$key$$ 簽名結果是 c5c05d54d25791b0551b25a482d8c2e2。這個 key 在客戶端是可見,別人也可以輕易拿到這個參數。
但是拿到這個key又有什么意義呢?

因為key是不會在網絡中進行傳輸的,所以服務器最終生成簽名的key還會是使用$$key$$,即使你修改了數據,也修改了客戶端的key但是你沒有修改掉服務器的key,最后服務器還會按照自己的方式生成sign。如果你修改了數據,最終也只是簽名結果不一致而已。


查看完整回答
反對 回復 2018-08-09
?
守著一只汪

TA貢獻1872條經驗 獲得超4個贊

sign里存放的都是保密信息,比如用戶的id或者其它用于驗證api合法性的參數
接口的請求參數一般是不放在sign里的,直接明文傳輸用https加密通信過程就可以
sign是服務端加密后傳給客戶端存放,在請求api時帶到服務端驗證身份合法性的,里面不會有接口的請求信息,這兩個是要分開的

查看完整回答
反對 回復 2018-08-09
  • 2 回答
  • 0 關注
  • 803 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號