接口鑒權(quán) & 重放攻擊

在實(shí)現(xiàn)接口鑒權(quán)功能的時(shí)候侣灶,我們應(yīng)該防止出現(xiàn)重放攻擊,可以借助 OAuth 的驗(yàn)證思路來解決缕碎。

一褥影、概念:

接口鑒權(quán):對外開放的接口在使用的時(shí)候須鑒定訪問者是否有權(quán)訪問接口,為了防止API調(diào)用過程中被惡意篡改咏雌,調(diào)用任何一個(gè)API都需要攜帶請求簽名凡怎,簽名不合法的請求都將被拒絕校焦。

重放攻擊(Replay Attacks):顧名思義,重復(fù)的會(huì)話請求就是重放攻擊统倒≌洌可能是因?yàn)橛脩糁貜?fù)發(fā)起請求,也可能是因?yàn)檎埱蟊还粽攉@取房匆,然后重新發(fā)給服務(wù)器耸成。

二、重放攻擊的防御方法

1浴鸿、加時(shí)間戳:請求時(shí)token加上客戶端當(dāng)前時(shí)間戳井氢,同時(shí)簽名(簽名是為了防止會(huì)話被劫持,時(shí)間戳被修改)岳链,服務(wù)端對請求時(shí)間戳進(jìn)行判斷花竞,如超過一分鐘,認(rèn)定為重放攻擊掸哑,請求無效约急。

缺點(diǎn):時(shí)間戳無法完全防止重放攻擊。未認(rèn)證系統(tǒng)還是可以在這一分鐘的 token 失效窗口內(nèi)苗分,通過截獲請求厌蔽、重放請求來調(diào)用接口。并且認(rèn)證雙方需要準(zhǔn)確的時(shí)間同步摔癣,同步越好奴饮,受攻擊的可能性就越小。但當(dāng)系統(tǒng)很龐大供填,跨越的區(qū)域較廣時(shí)拐云,要做到精確的時(shí)間同步并不是很容易罢猪。

2近她、加序列號(hào)(流水號(hào)):
在客戶端和服務(wù)端通訊時(shí),先定義一個(gè)初始序號(hào)膳帕,每次遞增粘捎。這樣,服務(wù)端就可以知道是否是重復(fù)發(fā)送的請求危彩。

缺點(diǎn):但是一旦攻擊者對報(bào)文解密成功攒磨,就可以獲得序列號(hào),從而每次將序列號(hào)遞增欺騙認(rèn)證端汤徽。

3娩缰、加隨機(jī)數(shù)(nonce):該方法優(yōu)點(diǎn)是認(rèn)證雙方不需要時(shí)間同步,雙方記住使用過隨機(jī)數(shù)如發(fā)現(xiàn)報(bào)文中有以前使用過的隨機(jī)數(shù)谒府,就認(rèn)為是重放攻擊拼坎。

缺點(diǎn):缺點(diǎn)是需要額外保存使用過的隨機(jī)數(shù)浮毯,若記錄的時(shí)間段較長,則保存和查詢的開銷較大泰鸡。

4债蓝、挑戰(zhàn)與應(yīng)答的方式:
客戶端請求服務(wù)器時(shí),服務(wù)器會(huì)首先生成一個(gè)隨機(jī)數(shù)盛龄,然后返回給客戶端饰迹,客戶端帶上這個(gè)隨機(jī)數(shù),訪問服務(wù)器余舶,服務(wù)器比對客戶端的這個(gè)參數(shù)啊鸭,若相同,說明正確欧芽,不是重放攻擊莉掂。

這種方式下,客戶端每次請求時(shí)千扔,服務(wù)端都會(huì)先生成一個(gè)挑戰(zhàn)碼憎妙,客戶端帶上應(yīng)答碼訪問,服務(wù)端進(jìn)行比對曲楚,若挑戰(zhàn)碼和應(yīng)答碼不對應(yīng)厘唾,視為重放攻擊。

5龙誊、HTTPS防重放攻擊
對于HTTPS抚垃,每個(gè)socket連接都會(huì)驗(yàn)證證書,交換密鑰趟大。攻擊者截獲請求鹤树,重新發(fā)送,因?yàn)閟ocket不同逊朽,密鑰也不同罕伯,后臺(tái)解密后是一堆亂碼,所以HTTPS本身就是防止重放攻擊的叽讳,除非能復(fù)制socket追他,或者進(jìn)行中間人攻擊。

三岛蚤、實(shí)現(xiàn)

為了防御重放攻擊邑狸,我在實(shí)際開發(fā)中見到的方法是增加token參數(shù),舉個(gè)例子:

1涤妒、如果某應(yīng)用需要請求服務(wù)器端接口单雾,需要服務(wù)器端給分配一個(gè)app_key和一個(gè)app_secret給這個(gè)應(yīng)用,并且服務(wù)器端需要備份一份,方便后續(xù)查找硅堆;

2蜂奸、為了防止重放攻擊,在參數(shù)中加入時(shí)間戳等參數(shù)(可參照上面防御方法)硬萍;

3扩所、然后使用加密算法MD5或者SHA進(jìn)行加密,生成token朴乖,在請求的URL中加入這個(gè)token參數(shù)祖屏,生成方式如下;

SHA(app_key=abc&app_secret=123&timeStamp=1669855515)
URL:https://xxx.xx.com/index.do?app_key=abc&token=xxx&timeStamp=1669855515

4买羞、服務(wù)器端收到請求后解析出參數(shù):app_key袁勺、token、timeStamp畜普;

5期丰、根據(jù)時(shí)間戳timeStamp判斷請求是否失效(我們暫定為一分鐘),超一分鐘為失效吃挑,如失效直接拒絕钝荡;

6、然后從服務(wù)器端根據(jù)app_key獲取app_secret舶衬;

7埠通、使用app_key、app_secret逛犹、timeStamp三個(gè)參數(shù)生成服務(wù)器端token端辱,方式同上;

8虽画、比較服務(wù)器端token和請求參數(shù)中token的是否一致舞蔽,一致就鑒權(quán)通過,否則拒絕码撰。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末渗柿,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子灸拍,更是在濱河造成了極大的恐慌做祝,老刑警劉巖砾省,帶你破解...
    沈念sama閱讀 218,122評(píng)論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件鸡岗,死亡現(xiàn)場離奇詭異,居然都是意外死亡编兄,警方通過查閱死者的電腦和手機(jī)轩性,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,070評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來狠鸳,“玉大人揣苏,你說我怎么就攤上這事悯嗓。” “怎么了卸察?”我有些...
    開封第一講書人閱讀 164,491評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵脯厨,是天一觀的道長。 經(jīng)常有香客問我坑质,道長合武,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,636評(píng)論 1 293
  • 正文 為了忘掉前任涡扼,我火速辦了婚禮稼跳,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘吃沪。我一直安慰自己汤善,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,676評(píng)論 6 392
  • 文/花漫 我一把揭開白布票彪。 她就那樣靜靜地躺著红淡,像睡著了一般。 火紅的嫁衣襯著肌膚如雪降铸。 梳的紋絲不亂的頭發(fā)上锉屈,一...
    開封第一講書人閱讀 51,541評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音垮耳,去河邊找鬼颈渊。 笑死,一個(gè)胖子當(dāng)著我的面吹牛终佛,可吹牛的內(nèi)容都是我干的俊嗽。 我是一名探鬼主播,決...
    沈念sama閱讀 40,292評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼铃彰,長吁一口氣:“原來是場噩夢啊……” “哼绍豁!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起牙捉,我...
    開封第一講書人閱讀 39,211評(píng)論 0 276
  • 序言:老撾萬榮一對情侶失蹤竹揍,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后邪铲,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體芬位,經(jīng)...
    沈念sama閱讀 45,655評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,846評(píng)論 3 336
  • 正文 我和宋清朗相戀三年带到,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了昧碉。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,965評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖被饿,靈堂內(nèi)的尸體忽然破棺而出四康,到底是詐尸還是另有隱情,我是刑警寧澤狭握,帶...
    沈念sama閱讀 35,684評(píng)論 5 347
  • 正文 年R本政府宣布闪金,位于F島的核電站,受9級(jí)特大地震影響论颅,放射性物質(zhì)發(fā)生泄漏毕泌。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,295評(píng)論 3 329
  • 文/蒙蒙 一嗅辣、第九天 我趴在偏房一處隱蔽的房頂上張望撼泛。 院中可真熱鬧,春花似錦澡谭、人聲如沸愿题。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,894評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽潘酗。三九已至,卻和暖如春雁仲,著一層夾襖步出監(jiān)牢的瞬間仔夺,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,012評(píng)論 1 269
  • 我被黑心中介騙來泰國打工攒砖, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留缸兔,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,126評(píng)論 3 370
  • 正文 我出身青樓吹艇,卻偏偏與公主長得像惰蜜,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子受神,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,914評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容