開放api接口簽名驗證

你在寫開放的API接口時是如何保證數據的安全性的莱找?我們通過http Post或者Get方式請求服務器的時候欺冀,會面臨著許多的安全性問題希坚,例如:

  1. 請求來源(身份)是否合法柴钻?
  2. 請求參數被篡改?
  3. 請求的唯一性(不可復制)

為了保證數據在通信時的安全性嵌屎,我們可以采用參數簽名的方式來進行相關驗證推正。

案列分析

我們通過給某 [移動端(app)] 寫 [后臺接口(api)] 的案例進行分析:

  • 客戶端: 以下簡稱app
  • 后臺接口:以下簡稱api

我們通過app查詢產品列表這個操作來進行分析:
app中點擊查詢按鈕==》調用api進行查詢==》返回查詢結果==>顯示在app中

一、不進行驗證的方式

api查詢接口:

http://api.test.com/getproducts?參數1=value1.......

如上宝惰,這種方式簡單粗暴植榕,通過調用getproducts方法即可獲取產品列表信息了,但是 這樣的方式會存在很嚴重的安全性問題尼夺,沒有進行任何的驗證尊残,大家都可以通過這個方法獲取到產品列表,導致產品信息泄露淤堵。
那么寝衫,如何驗證調用者身份呢?如何防止參數被篡改呢拐邪?

二慰毅、MD5參數簽名的方式

我們對api查詢產品接口進行優(yōu)化:

  1. 給app分配對應的key、secret
  2. Sign簽名扎阶,調用API 時需要對請求參數進行簽名驗證汹胃,簽名方式如下:
    a. 按照請求參數名稱將所有請求參數按照字母先后順序排序得到:keyvaluekeyvalue...keyvalue 字符串如:將arong=1,mrong=2,crong=3 排序為:arong=1, crong=3,mrong=2 然后將參數名和參數值進行拼接得到參數字符串:arong1crong3mrong2婶芭。
    b. 將secret加在參數字符串的頭部后進行MD5加密 ,加密后的字符串需大寫。即得到簽名Sign

新api接口代碼:

http://api.test.com/getproducts?key=app_key&sign=BCC7C71CF93F9CDBDB88671B701D8A35
    &參數1=value1&參數2=value2.......

注:secret 僅作加密使用, 為了保證數據安全請不要在請求參數中使用着饥。

如上犀农,優(yōu)化后的請求多了key和sign參數,這樣請求的時候就需要合法的key和正確簽名sign才可以獲取產品數據宰掉。這樣就解決了身份驗證和防止參數篡改問題呵哨,如果請求參數被人拿走,沒事轨奄,他們永遠也拿不到secret,因為secret是不傳遞的孟害。再也無法偽造合法的請求。
但是...這樣就夠了嗎戚绕?細心的同學可能會發(fā)現(xiàn)纹坐,如果我獲取了你完整的鏈接,一直使用你的key和sign和一樣的參數不就可以正常獲取數據了...-_-!是的舞丛,僅僅是如上的優(yōu)化是不夠的耘子。

三、保證請求的唯一性

為了防止別人重復使用請求參數問題球切,我們需要保證請求的唯一性谷誓,就是對應請求只能使用一次,這樣就算別人拿走了請求的完整鏈接也是無效的吨凑。
唯一性的實現(xiàn):在如上的請求參數中捍歪,我們加入時間戳:timestamp
(yyyyMMddHHmmss),同樣鸵钝,時間戳作為請求參數之一糙臼,也加入sign算法中進行加密。
新的api接口:

http://api.test.com/getproducts?key=app_key&sign=BCC7C71CF93F9CDBDB88671B701D8A35
        &timestamp=201603261407&參數1=value1&參數2=value2.......

如上恩商,我們通過timestamp時間戳用來驗證請求是否過期变逃。這樣就算被人拿走完整的請求鏈接也是無效的。

Sign簽名安全性分析:

通過上面的案例怠堪,我們可以看出揽乱,安全的關鍵在于參與簽名的secret,整個過程中secret是不參與通信的粟矿,所以只要保證secret不泄露凰棉,請求就不會被偽造。
上述的Sign簽名的方式能夠在一定程度上防止信息被篡改和偽造陌粹,保障通信的安全撒犀,這里使用的是MD5進行加密,當然實際使用中大家可以根據實際需求進行自定義簽名算法,比如:RSA或舞,SHA等隧膏。

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市嚷那,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌杆煞,老刑警劉巖魏宽,帶你破解...
    沈念sama閱讀 221,198評論 6 514
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異决乎,居然都是意外死亡队询,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,334評論 3 398
  • 文/潘曉璐 我一進店門构诚,熙熙樓的掌柜王于貴愁眉苦臉地迎上來蚌斩,“玉大人,你說我怎么就攤上這事范嘱∷蜕牛” “怎么了?”我有些...
    開封第一講書人閱讀 167,643評論 0 360
  • 文/不壞的土叔 我叫張陵丑蛤,是天一觀的道長叠聋。 經常有香客問我,道長受裹,這世上最難降的妖魔是什么碌补? 我笑而不...
    開封第一講書人閱讀 59,495評論 1 296
  • 正文 為了忘掉前任,我火速辦了婚禮棉饶,結果婚禮上厦章,老公的妹妹穿的比我還像新娘。我一直安慰自己照藻,他們只是感情好袜啃,可當我...
    茶點故事閱讀 68,502評論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著岩梳,像睡著了一般囊骤。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上冀值,一...
    開封第一講書人閱讀 52,156評論 1 308
  • 那天也物,我揣著相機與錄音,去河邊找鬼列疗。 笑死滑蚯,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播告材,決...
    沈念sama閱讀 40,743評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼坤次,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了斥赋?” 一聲冷哼從身側響起缰猴,我...
    開封第一講書人閱讀 39,659評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎疤剑,沒想到半個月后滑绒,有當地人在樹林里發(fā)現(xiàn)了一具尸體,經...
    沈念sama閱讀 46,200評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡隘膘,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 38,282評論 3 340
  • 正文 我和宋清朗相戀三年疑故,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片弯菊。...
    茶點故事閱讀 40,424評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡纵势,死狀恐怖,靈堂內的尸體忽然破棺而出管钳,到底是詐尸還是另有隱情钦铁,我是刑警寧澤,帶...
    沈念sama閱讀 36,107評論 5 349
  • 正文 年R本政府宣布蹋嵌,位于F島的核電站育瓜,受9級特大地震影響,放射性物質發(fā)生泄漏栽烂。R本人自食惡果不足惜躏仇,卻給世界環(huán)境...
    茶點故事閱讀 41,789評論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望腺办。 院中可真熱鬧焰手,春花似錦、人聲如沸怀喉。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,264評論 0 23
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽躬拢。三九已至躲履,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間聊闯,已是汗流浹背工猜。 一陣腳步聲響...
    開封第一講書人閱讀 33,390評論 1 271
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留菱蔬,地道東北人篷帅。 一個月前我還...
    沈念sama閱讀 48,798評論 3 376
  • 正文 我出身青樓史侣,卻偏偏與公主長得像,于是被迫代替她去往敵國和親魏身。 傳聞我的和親對象是個殘疾皇子惊橱,可洞房花燭夜當晚...
    茶點故事閱讀 45,435評論 2 359

推薦閱讀更多精彩內容

  • 接口安全問題 請求身份是否合法税朴? 請求參數是否被篡改? 請求是否唯一家制? AccessKey&SecretKey (...
    Joker_Coding閱讀 64,370評論 13 76
  • 去年有段時間得空掉房,就把谷歌GAE的API權威指南看了一遍,收獲頗豐慰丛,特別是在自己幾乎獨立開發(fā)了公司的云數據中心之后...
    騎單車的勛爵閱讀 20,544評論 0 41
  • 在做一些api接口設計時候會遇到設置權限問題,比如我這個接口只有指定的用戶才能訪問瘾杭。 很多時候api接口是屬于無狀...
    慶慶_ce88閱讀 959評論 0 1
  • 點擊訪問原文您還可以加入全棧技術交流群(QQ群號:254842154) 系統(tǒng)從外部獲取數據時诅病,通常采用API接口調...
    hellojammyPlus閱讀 29,185評論 14 54
  • 今天天氣非常好,雖然很忙碌粥烁,可還是在回家拿東西的路上和隔壁彭爺爺聊了幾句贤笆。 彭爺爺坐在門口,豆豆坐在他旁邊讨阻,前面是...
    養(yǎng)貓人依若閱讀 144評論 0 0