
關(guān)于API令牌你需要知道的一切
<span class="hljs-keyword">if</span> (!Strings.isNullOrEmpty(token)) {
hasAuth = redisTemplate.hasKey(<span class="hljs-string">"userToken:"</span> + token);
}
這類方法實(shí)現(xiàn)比較簡單,可以做基本的身份認(rèn)證,防君子不防小人,可通過中間人攻擊獲得 Authorization。使用 HTTPS 安全性會(huì)得到提高,但是無法抵御重放攻擊造成的影響,例如 DDOS,我們這里來分析一下會(huì)遭受什么攻擊?怎么實(shí)現(xiàn)攻擊手法
在非加密的HTTP連接上,任何在網(wǎng)絡(luò)路徑上的攻擊者都可以截取和讀取請(qǐng)求和響應(yīng)的內(nèi)容。這意味著如果Authorization
頭包含的是純文本的用戶名/密碼組合或者是一個(gè)靜態(tài)令牌,攻擊者可以輕松地獲取這些信息,并在后續(xù)的請(qǐng)求中重用它們來冒充合法用戶。
即使使用HTTPS來加密通信,靜態(tài)的認(rèn)證令牌仍然容易受到重放攻擊。在這種攻擊中,攻擊者不是截取和解密數(shù)據(jù),而是簡單地記錄下一次成功的認(rèn)證請(qǐng)求,然后重復(fù)發(fā)送這個(gè)請(qǐng)求來訪問資源。這是因?yàn)殪o態(tài)令牌在一段時(shí)間內(nèi)保持不變,所以攻擊者可以多次使用同一個(gè)令牌
請(qǐng)求端加密是說,比如我對(duì)你說話,那么我是請(qǐng)求端,是我這里說話的時(shí)候進(jìn)行加密,把我說的話加密一下再說給你,而你是服務(wù)端
看一下下面的圖
剛才我說道服務(wù)端是你,請(qǐng)求端是我,還用這個(gè)舉例子,我把話說給你之后然后你是服務(wù)端,我加密了,說給你的話是加密的,這時(shí)候你需要驗(yàn)證并解密我說的話才行,那么是服務(wù)端解密和驗(yàn)證
主要防的是你burpsuite抓包重放,有了這個(gè)驗(yàn)證你想著通過bp抓包重放進(jìn)行攻擊,抱歉不可能了,因?yàn)闀?huì)驗(yàn)證和加密,你抓包后在放包的時(shí)候會(huì)出現(xiàn)驗(yàn)證不過,會(huì)丟棄你那個(gè)包,到最后實(shí)現(xiàn)防御你這個(gè)攻擊。API簽名機(jī)制可以通過加入時(shí)間戳和nonce(一次性隨機(jī)數(shù))來進(jìn)一步增強(qiáng)安全性,以防御重放攻擊。時(shí)間戳和nonce都會(huì)被包含在簽名計(jì)算中,且每個(gè)請(qǐng)求的時(shí)間戳和nonce都應(yīng)該唯一。服務(wù)器會(huì)檢查時(shí)間戳,確保請(qǐng)求沒有過期,并且會(huì)跟蹤nonce,以避免處理重復(fù)的請(qǐng)求。
為了提高安全性,通常會(huì)結(jié)合使用timestamp(時(shí)間戳)和nonce(一次性隨機(jī)數(shù)),以防止重放攻擊(replay attack)。下面我進(jìn)行全面的講解
我們講到這里會(huì)有人詢問,這個(gè)API簽名加密和https是不是一回事?直接用https加密不行了還搞那么麻煩那么多事情干嘛?抱歉,這里我要說的是,不是一個(gè)概念,甚至這兩個(gè)東西不是同樣的東西,https是傳輸層的一個(gè)加密,和API簽名不在同一層,我來進(jìn)行一下解析。
結(jié)合HTTPS和API簽名,可以提供更全面的安全保障,既保護(hù)了數(shù)據(jù)在傳輸過程中的安全,也確保了到達(dá)服務(wù)器的請(qǐng)求是合法且未被篡改的。在實(shí)際部署中,這是推薦的做法,尤其對(duì)于涉及敏感數(shù)據(jù)和交易的API。
作者:幻城
關(guān)于API令牌你需要知道的一切
經(jīng)濟(jì)動(dòng)蕩期,開發(fā)者如何用API平臺(tái)提升個(gè)人競爭力!
API 設(shè)計(jì)優(yōu)先:增強(qiáng)您的開發(fā)過程
一人AI創(chuàng)新項(xiàng)目為什么要加入API平臺(tái)!重要嗎?
API管理入門:什么是API管理?
為什么API經(jīng)濟(jì)在經(jīng)濟(jì)不確定時(shí)期表現(xiàn)突出
適合各種預(yù)算和需求的 50 種 API 工具
構(gòu)建大語言模型友好型API
Coze應(yīng)用的靈魂,90+高質(zhì)量prompt一次帶走
對(duì)比大模型API的內(nèi)容創(chuàng)意新穎性、情感共鳴力、商業(yè)轉(zhuǎn)化潛力
一鍵對(duì)比試用API 限時(shí)免費(fèi)