自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

我們一起聊聊如何設(shè)計(jì)安全的對(duì)外 API?

開(kāi)發(fā) 前端
在 HMAC 簽名中加入時(shí)間戳是為了防止重放攻擊(replay attack)。重放攻擊是一種網(wǎng)絡(luò)攻擊方式,攻擊者攔截合法的請(qǐng)求并在之后重復(fù)發(fā)送相同的請(qǐng)求,試圖偽造身份或重復(fù)操作。

當(dāng)向外部服務(wù)暴露 API 時(shí),確保安全通信至關(guān)重要,以防止未經(jīng)授權(quán)的訪(fǎng)問(wèn)和數(shù)據(jù)泄露。

兩種常用的 API 安全方法是基于 Token 的身份認(rèn)證和基于 HMAC(哈希消息認(rèn)證碼)的認(rèn)證。

下面我們來(lái)介紹這兩種方法的工作原理,并比較它們的不同之處。

圖片圖片

01 基于令牌

  • 第 1 步 - 用戶(hù)在客戶(hù)端輸入密碼,客戶(hù)端將密碼發(fā)送給驗(yàn)證服務(wù)器。
  • 第 2 步 - 驗(yàn)證服務(wù)器驗(yàn)證憑據(jù)并生成一個(gè)有有效期的令牌。
  • 第 3 步和第 4 步 - 現(xiàn)在,客戶(hù)端可以發(fā)送請(qǐng)求,客戶(hù)端在每個(gè) API 請(qǐng)求的 Authorization 頭中包含這個(gè)Token,訪(fǎng)問(wèn)服務(wù)器資源。這種訪(fǎng)問(wèn)在令牌過(guò)期前一直有效。

優(yōu)點(diǎn)

  • 無(wú)狀態(tài):服務(wù)器不需要維護(hù)會(huì)話(huà)狀態(tài),Token 本身包含驗(yàn)證所需的所有信息。
  • 靈活性:Token 可以包含角色或權(quán)限等元數(shù)據(jù),支持細(xì)粒度的訪(fǎng)問(wèn)控制。
  • 支持 OAuth 集成:與OAuth 2.0 兼容,適合第三方集成場(chǎng)景。

缺點(diǎn)

  • Token 泄露風(fēng)險(xiǎn):如果 Token 被攔截,攻擊者可以在 Token 過(guò)期前濫用它,除非有其他機(jī)制(如 Token 吊銷(xiāo))在起作用。
  • Token 存儲(chǔ):客戶(hù)端需要安全存儲(chǔ) Token,對(duì)于 Web 或移動(dòng)應(yīng)用程序來(lái)說(shuō),這可能比較復(fù)雜。

02 基于 HMAC

該機(jī)制使用哈希函數(shù)(SHA256 或 MD5)生成消息驗(yàn)證碼(簽名)。

  • 第 1 和 2 步 - 服務(wù)器生成兩個(gè)密鑰,一個(gè)是公共 APP ID(公鑰),另一個(gè)是 API 密鑰(私鑰)。
  • 第 3 步:現(xiàn)在我們?cè)诳蛻?hù)端生成一個(gè) HMAC 簽名(hmac A)。該簽名是根據(jù)圖中列出的一組屬性生成的。
  • 第 4 步 - 客戶(hù)端發(fā)送訪(fǎng)問(wèn)服務(wù)器資源的請(qǐng)求,HTTP 頭中包含 hmac A。
  • 第 5 步 - 服務(wù)器收到包含請(qǐng)求數(shù)據(jù)和身份驗(yàn)證標(biāo)頭的請(qǐng)求。它從請(qǐng)求中提取必要的屬性,并使用存儲(chǔ)在服務(wù)器端的 API 密鑰生成簽名(hmac B。)
  • 第 6 和 7 步 - 服務(wù)器會(huì)比較 hmac A(在客戶(hù)端生成)和 hmac B(在服務(wù)器端生成)。如果兩者匹配,請(qǐng)求的資源將返回給客戶(hù)端。

優(yōu)點(diǎn)

  • 防篡改:HMAC 確保請(qǐng)求在傳輸過(guò)程中未被篡改,哪怕只改變一個(gè)字節(jié),簽名也會(huì)不匹配。
  • 簡(jiǎn)單:不需要 Token 的發(fā)放或刷新,僅依賴(lài)共享密鑰和哈希算法。
  • 無(wú) Token 泄露風(fēng)險(xiǎn):因?yàn)闆](méi)有 Token 可被盜取,這種方法天然安全。

缺點(diǎn)

  • 密鑰管理:客戶(hù)端和服務(wù)器都必須安全地管理和存儲(chǔ)共享密鑰。一旦密鑰泄露,安全性就會(huì)受到影響。
  • 無(wú)狀態(tài) API 較復(fù)雜:HMAC 不提供內(nèi)嵌元數(shù)據(jù)的無(wú)狀態(tài)認(rèn)證,訪(fǎng)問(wèn)控制需要單獨(dú)處理。

在 HMAC 簽名中加入時(shí)間戳是為了防止重放攻擊(replay attack)。重放攻擊是一種網(wǎng)絡(luò)攻擊方式,攻擊者攔截合法的請(qǐng)求并在之后重復(fù)發(fā)送相同的請(qǐng)求,試圖偽造身份或重復(fù)操作。通過(guò)時(shí)間戳,服務(wù)器可以驗(yàn)證請(qǐng)求是否在合理的時(shí)間范圍內(nèi),從而大大提高系統(tǒng)的安全性。

責(zé)任編輯:武曉燕 來(lái)源: ByteByteGo
相關(guān)推薦

2022-05-24 08:21:16

數(shù)據(jù)安全API

2024-11-27 08:47:12

2022-02-14 07:03:31

網(wǎng)站安全MFA

2022-01-04 12:08:46

設(shè)計(jì)接口

2023-11-10 08:04:43

Java 17Java 11JDK

2024-02-02 09:21:57

API性能策略

2023-11-30 07:40:05

URLCMS

2024-10-29 11:19:23

點(diǎn)贊系統(tǒng)同步

2024-02-20 13:00:00

架構(gòu)設(shè)計(jì)模塊

2024-06-17 11:59:39

2025-03-17 11:21:08

APISwagger界面

2025-04-08 00:16:07

2022-05-05 12:57:40

架構(gòu)

2023-04-26 07:30:00

promptUI非結(jié)構(gòu)化

2021-08-27 07:06:10

IOJava抽象

2024-02-20 21:34:16

循環(huán)GolangGo

2024-09-30 09:33:31

2024-11-27 16:07:45

2024-07-12 08:28:09

聊天系統(tǒng)架構(gòu)

2022-10-08 00:00:05

SQL機(jī)制結(jié)構(gòu)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)