簽名生成

api 簽名(sign)設計文檔

版本 日期 改動說明 審核人 擬定人
V1.0.0 2019-03-20 初步擬定

1站楚、背景

? 1. 在公共網(wǎng)絡環(huán)境(如: WIFI阵翎、非家庭網(wǎng)絡双絮、非辦公網(wǎng)絡等)網(wǎng)絡請求是不安全的,一切基于HTTP協(xié)議的請求/響應(Resquest/Response)都是可以背截獲够吩、篡改比然、重發(fā)的。

? 2. 對外開放的接口安全性要求:防偽裝攻擊周循、防篡改攻擊强法、防重發(fā)攻擊

2、實現(xiàn)思路

? 1. app 端根據(jù)用戶請求的唯一憑證 (app_key 或token) 再拼接上請求接口需要的參數(shù)湾笛,再拼接上時間戳(timestamp) 最終生成MD5編碼饮怯,再轉(zhuǎn)化成全部大寫的形式生成簽名(sign)。在請求的app接口的信息中將為一憑證(app_key 或token)和 sign嚎研,和時間戳(timestamp)一同提交到服務蓖墅。

? 2. 服務端驗證:

? (1)判斷token 是否有效

? (2)判斷服務器端根據(jù)規(guī)則生成的sign 和用戶傳過來的sign是否相同

? (3)判斷時間戳(timestamp)是否在有效期內(nèi)

3、設計方案

簽名算法過程:

? 1.對除簽名外的所有請求參數(shù)按key做的升序排列,value無需編碼临扮。 (假設當前時間的時間戳是12345678)

? 例如:有c=3,b=2,a=1 三個參论矾,另加上時間戳后, 按key排序后為:a=1杆勇,b=2贪壳,c=3,_timestamp=12345678蚜退。

? 2 .把參數(shù)名和參數(shù)值連接成字符串闰靴,得到拼裝字符:a1b2c3_timestamp12345678

? 3. 用申請到的token 連接到接拼裝字符串頭部彪笼,然后進行32位MD5加密,最后將到得MD5加密摘要轉(zhuǎn)化成大寫传黄。

? 示例:假設token=test杰扫,md5(testa1b2c3_timestamp12345678),取得MD5摘要值 C5F3EB5D7DC2748AED89E90AF00081E6

python代碼實現(xiàn)

?

In [20]: def md5(content): 
    ...:     if isinstance(content, str): 
    ...:         content = content.encode("utf-8") 
    ...:     hash = hashlib.md5() 
    ...:     hash.update(content) 
    ...:     return hash.hexdigest()


parame_dict = {'token': 'test', 
               'invoice_i':'af5b769c9ba5456306468e61719a09ca', 
               'timestamp': 123456789} 
token = parame_dict.pop('token') 
sign_str = token + ''.join([str(item[0])+str(item[1]) for item in sorted(parame_dict.items(), key=lambda d: d[0])]) 
sign = md5(sign_str).upper() 
print(sign)
'CA116DE1DC8B33B7A73E0A1CF99CD92B'

4膘掰、app端使用方法

?

? 1章姓、根據(jù)規(guī)則生成sign

? 2、參數(shù)傳遞方式

? sign 放在http請求的header中

?

key value 是否必填
sign CA116DE1DC8B33B7A73E0A1CF99CD92B

? token识埋、timestamp 放在http請求的body中

key value 是否必填
token test
timestamp 123456789
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末凡伊,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子窒舟,更是在濱河造成了極大的恐慌系忙,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,755評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件惠豺,死亡現(xiàn)場離奇詭異银还,居然都是意外死亡,警方通過查閱死者的電腦和手機洁墙,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,305評論 3 395
  • 文/潘曉璐 我一進店門蛹疯,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人热监,你說我怎么就攤上這事捺弦。” “怎么了孝扛?”我有些...
    開封第一講書人閱讀 165,138評論 0 355
  • 文/不壞的土叔 我叫張陵列吼,是天一觀的道長。 經(jīng)常有香客問我苦始,道長寞钥,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,791評論 1 295
  • 正文 為了忘掉前任陌选,我火速辦了婚禮理郑,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘柠贤。我一直安慰自己香浩,他們只是感情好,可當我...
    茶點故事閱讀 67,794評論 6 392
  • 文/花漫 我一把揭開白布臼勉。 她就那樣靜靜地躺著邻吭,像睡著了一般。 火紅的嫁衣襯著肌膚如雪宴霸。 梳的紋絲不亂的頭發(fā)上囱晴,一...
    開封第一講書人閱讀 51,631評論 1 305
  • 那天膏蚓,我揣著相機與錄音,去河邊找鬼畸写。 笑死驮瞧,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的枯芬。 我是一名探鬼主播论笔,決...
    沈念sama閱讀 40,362評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼千所!你這毒婦竟也來了狂魔?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,264評論 0 276
  • 序言:老撾萬榮一對情侶失蹤淫痰,失蹤者是張志新(化名)和其女友劉穎最楷,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體待错,經(jīng)...
    沈念sama閱讀 45,724評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡籽孙,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,900評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了火俄。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片犯建。...
    茶點故事閱讀 40,040評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖烛占,靈堂內(nèi)的尸體忽然破棺而出胎挎,到底是詐尸還是另有隱情沟启,我是刑警寧澤忆家,帶...
    沈念sama閱讀 35,742評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站德迹,受9級特大地震影響芽卿,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜胳搞,卻給世界環(huán)境...
    茶點故事閱讀 41,364評論 3 330
  • 文/蒙蒙 一卸例、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧肌毅,春花似錦筷转、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,944評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至笨奠,卻和暖如春袭蝗,著一層夾襖步出監(jiān)牢的瞬間唤殴,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,060評論 1 270
  • 我被黑心中介騙來泰國打工到腥, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留朵逝,地道東北人。 一個月前我還...
    沈念sama閱讀 48,247評論 3 371
  • 正文 我出身青樓乡范,卻偏偏與公主長得像配名,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子晋辆,可洞房花燭夜當晚...
    茶點故事閱讀 44,979評論 2 355