更新時(shí)間:2019-09-12 09:39:32 來(lái)源:動(dòng)力節(jié)點(diǎn) 瀏覽3114次
API安全機(jī)制
為什么要保證API安全
接口的安全性主要圍繞Token、Timestamp和Sign三個(gè)機(jī)制展開(kāi)設(shè)計(jì),保證接口的數(shù)據(jù)不會(huì)被篡改和重復(fù)調(diào)用,下面具體來(lái)看:
Token授權(quán)機(jī)制:用戶使用用戶名密碼登錄后服務(wù)器給客戶端返回一個(gè)Token(通常是UUID),并將Token-UserId以鍵值對(duì)的形式存放在緩存服務(wù)器中。服務(wù)端接收到請(qǐng)求后進(jìn)行Token驗(yàn)證,如果Token不存在,說(shuō)明請(qǐng)求無(wú)效。
時(shí)間戳超時(shí)機(jī)制:用戶每次請(qǐng)求都帶上當(dāng)前時(shí)間的時(shí)間戳timestamp,服務(wù)端接收到timestamp后跟當(dāng)前時(shí)間進(jìn)行比對(duì),如果時(shí)間差大于一定時(shí)間(比如5分鐘),則認(rèn)為該請(qǐng)求失效,這個(gè)時(shí)間要保證足夠完成本次請(qǐng)求的同時(shí)盡量短,可以減少緩存服務(wù)器的壓力(見(jiàn)簽名機(jī)制)。
簽名機(jī)制:將Token和時(shí)間戳加上其他請(qǐng)求參數(shù)就行MD5或SHA-1算法(可根據(jù)情況加點(diǎn)鹽)加密,加密后的數(shù)據(jù)為本次請(qǐng)求的簽名sign,并將該簽名存放到緩存服務(wù)器中,超時(shí)時(shí)間設(shè)定為跟時(shí)間戳的超時(shí)時(shí)間一致(這就是為什么要盡量短,二者時(shí)間一致可以保證無(wú)論在timestamp規(guī)定時(shí)間內(nèi)還是外本URL都只能訪問(wèn)一次)。服務(wù)端接收到請(qǐng)求后以同樣的算法得到簽名,并跟當(dāng)前的簽名進(jìn)行比對(duì),如果不一樣,說(shuō)明參數(shù)被更改過(guò),直接返回錯(cuò)誤標(biāo)識(shí)。同一個(gè)簽名只能使用一次,如果發(fā)現(xiàn)緩存服務(wù)器中已經(jīng)存在了本次簽名,則拒絕服務(wù)。
防止別人隨便調(diào)用你的api
保證傳輸數(shù)據(jù)的安全
前后端分離mvvm模式的N宗罪;
5分鐘搞定密碼學(xué)的對(duì)稱/非對(duì)稱加密;
接口簽名,防止數(shù)據(jù)篡改之泰斗;
用代碼告訴你,令牌實(shí)現(xiàn)身份認(rèn)證;
優(yōu)雅處理身份認(rèn)證,讓業(yè)務(wù)代碼更6;
數(shù)據(jù)加密

加密方法
1,對(duì)稱加密
AES,3DES,DES等,適合做大量數(shù)據(jù)或數(shù)據(jù)文件的加解密。
2,非對(duì)稱加密
如RSA,Rabin。公鑰加密,私鑰解密。對(duì)大數(shù)據(jù)量進(jìn)行加解密時(shí)性能較低。
Api有哪些安全問(wèn)題?http接口—前后端分離mvvm

安全夠了嗎,還有哪些要做?

身份認(rèn)證—token令牌


身份認(rèn)證的封裝—cookie隱式攜帶token

傳輸安全
互聯(lián)網(wǎng)發(fā)展到今天,大家越來(lái)越重視自己的隱私,各大公司也越來(lái)越重視數(shù)據(jù)的安全。傳輸過(guò)程中的數(shù)據(jù)安全解決方案主要是“HPPTS”,能夠有效防止中間人攻擊等。但是API中重要的參數(shù)還是要進(jìn)行加密,常用DES或者AES進(jìn)行加密。有見(jiàn)過(guò)API中密碼直接MD5后就行傳輸,但是MD5在2009年謝濤和馮登國(guó)僅用了220.96的碰撞算法復(fù)雜度,破解了MD5的碰撞抵抗,該攻擊在普通計(jì)算機(jī)上運(yùn)行只需要數(shù)秒鐘,引自[維基百科]。
總結(jié)
安全是一個(gè)永恒的話題,隨著各大網(wǎng)站全站https的推進(jìn),安全也越來(lái)越被重視。簽名設(shè)計(jì)大家必須有,HTTPS希望大家有。
以上就是動(dòng)力節(jié)點(diǎn)java培訓(xùn)機(jī)構(gòu)小編分享的“動(dòng)力節(jié)點(diǎn)IT培訓(xùn)帶你詳解API接口安全”的內(nèi)容,希望對(duì)大家有幫助,更多java最新資訊請(qǐng)繼續(xù)關(guān)注動(dòng)力節(jié)點(diǎn)java培訓(xùn)機(jī)構(gòu)官網(wǎng),每天會(huì)有精彩內(nèi)容分與你。
相關(guān)閱讀
Java實(shí)驗(yàn)班
0基礎(chǔ) 0學(xué)費(fèi) 15天面授
Java就業(yè)班
有基礎(chǔ) 直達(dá)就業(yè)
Java夜校直播班
業(yè)余時(shí)間 高薪轉(zhuǎn)行
Java在職加薪班
工作1~3年,加薪神器
Java架構(gòu)師班
工作3~5年,晉升架構(gòu)
提交申請(qǐng)后,顧問(wèn)老師會(huì)電話與您溝通安排學(xué)習(xí)