更新時(shí)間:2019-02-13 10:52 來源:動(dòng)力節(jié)點(diǎn) 瀏覽11499次
Http接口安全概述
1、Http接口是互聯(lián)網(wǎng)各系統(tǒng)之間對(duì)接的重要方式之一;
使用http接口,開發(fā)和調(diào)用都很方便,也是被大量采用的方式,它可以讓不同系統(tǒng)之間實(shí)現(xiàn)數(shù)據(jù)的交換和共享,但由于http接口開放在互聯(lián)網(wǎng)上,那么我們就需要有一定的安全措施來保證不能是隨隨便便就可以調(diào)用;
2、目前國內(nèi)互聯(lián)網(wǎng)公司主要采用兩種做法實(shí)現(xiàn)接口的安全;
一種是以支付寶等支付公司為代表的私鑰公鑰簽名驗(yàn)證機(jī)制,一種是大量互聯(lián)網(wǎng)企業(yè)都常采用的參數(shù)簽名驗(yàn)證機(jī)制;
接口的安全也是在實(shí)踐中總結(jié)出來的,并經(jīng)歷了幾個(gè)過程:
1.完全開放的接口(完全開放)
2.接口參數(shù)簽名(基本安全)
什么是參數(shù)簽名?
參數(shù)簽名就是指將請(qǐng)求的所有參數(shù),按照某種簽名算法生成一個(gè)簽名串,在請(qǐng)求的時(shí)候帶上這個(gè)簽名串一起請(qǐng)求接口;
接口參數(shù)簽名步驟如下:
第1步: 將所有參數(shù)(除去sign本身),按參數(shù)名字母升序排序;
第2步: 然后把排序后的參數(shù)按:參數(shù)1=值1&參數(shù)2=值2…&參數(shù)n=值n(這里的參數(shù)和值都是是傳輸參數(shù)的原始值,不是經(jīng)過處理的)的方式拼接成一個(gè)字符串;
第3步: 把分配給接入方的驗(yàn)證密鑰key拼接在第2步得到的字符串后面;
第4步: 計(jì)算第3步字符串的md5值,使用md5值的16進(jìn)制字符串作為最終sign的的值;
舉例說明:
比如傳輸?shù)臄?shù)據(jù)是:
http://www.xxx.com/interface?idCard=110819000000000000&phone=13700000000&bankCard=6232898709123216&sign=sign_value
其中sign參數(shù)對(duì)應(yīng)的sign_value就是簽名的值;
第一步,拼接字符串,首先去除sign參數(shù)本身,剩下的為:
idCard=110819000000000000&realName=張三&phone=13700000000&bankCard=6232898709123216
然后按參數(shù)名字符升序排序:
bankCard=6232898709123216&idCard=110819000000000000&phone=13700000000&realName=張三
第二步,然后做參數(shù)名和值的拼接,最后得到:bankCard=6232898709123216&idCard=110819000000000000&phone=13700000000&realName=張三
第三步,在上面拼接得到的字符串前加上驗(yàn)證密鑰key,我們假設(shè)是abcdefg,得到新的字符串:
bankCard=6232898709123216&idCard=110819000000000000&phone=13700000000&realName=張三&key=abcdefg
第四步,然后將這個(gè)字符串進(jìn)行md5十六進(jìn)制計(jì)算,假設(shè)得到的是opqrst,該值即為sign簽名值;
3.接口參數(shù)簽名+時(shí)效性驗(yàn)證(更加安全)
該種機(jī)制與上一種機(jī)制一樣;
只是在參數(shù)中新增一個(gè)時(shí)間戳,接口方驗(yàn)證時(shí)間戳是否在允許的時(shí)間范圍內(nèi);
4.接口參數(shù)私鑰簽名公鑰驗(yàn)簽(固若金湯)
這是一種更為安全的方式,它通過私鑰和公鑰實(shí)現(xiàn)接口的安全,目前互聯(lián)網(wǎng)中主要是以支付寶為代表的公司采用這種機(jī)制;(有很多開放平臺(tái)也是采用這種機(jī)制)
這種簽名方式通過4把密鑰來實(shí)現(xiàn);
客戶端應(yīng)用私鑰
客戶端應(yīng)用公鑰
服務(wù)端應(yīng)用私鑰
服務(wù)端應(yīng)用公鑰
5.接口參數(shù)簽名+Https(金鐘罩)
該方式是在第2或3種方式的基礎(chǔ)上添加https,https需要在服務(wù)器上進(jìn)行配置;
6.接口參數(shù)私鑰簽名公鑰驗(yàn)簽+Https(金鐘罩)
該方式是在第4種方式的基礎(chǔ)上添加https,https需要在服務(wù)器上進(jìn)行配置即可;
當(dāng)然:安全是相對(duì)的,只有相對(duì)的安全,沒有絕對(duì)的安全!
相關(guān)閱讀
0基礎(chǔ) 0學(xué)費(fèi) 15天面授
有基礎(chǔ) 直達(dá)就業(yè)
業(yè)余時(shí)間 高薪轉(zhuǎn)行
工作1~3年,加薪神器
工作3~5年,晉升架構(gòu)
提交申請(qǐng)后,顧問老師會(huì)電話與您溝通安排學(xué)習(xí)
初級(jí) 202925
初級(jí) 203221
初級(jí) 202629
初級(jí) 203743