Skip to content
KitploitKITPLOIT
工具漏洞利用博客
Log in
提交
工具漏洞利用博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
about-hmac — HMAC 实现示例与说明 | Kitploit
工具/GitHubGitHub/password123456/about-hmac
密码学身份验证学习与教育API 安全
GitHubpassword123456/about-hmac

about-hmac

HMAC 实现示例与说明

查看仓库
2172年前尚未审核

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

关于 HMAC

made-with-python Python Versions Hits

使用Flask在Python中实现基本HMAC(基于哈希的消息认证码)的示例。

什么是HMAC?!

基于哈希的消息认证码(HMAC)为服务器和客户端分别提供一个私钥,该私钥只有该特定服务器和该特定客户端知道。客户端通过对请求数据和私钥进行哈希运算,为每个请求创建一个唯一的HMAC(或哈希),并将其作为请求的一部分发送。HMAC比消息认证码(MAC)更安全的原因在于,密钥和消息是在不同的步骤中分别进行哈希处理的。

img

示例

(1)客户端请求到服务器

  • 当客户端向服务器发送请求时,它会包含以下头部信息:

  • X-Authorization-Content-HMAC: HMAC哈希(整个请求URI、当前Unix时间戳(UTC)和HMAC密钥)

  • X-Authorization-Timestamp: 客户端当前Unix时间戳(UTC)

(request)
GET /example/users?user=test&institutionID=999&signature=7e745d74b69b7f62e8e2 HTTP/1.1
Host: example.com
X-Authorization-Content-HMAC: 1c73495878ccea24af9dd281a4c883c40a3551ba799d30f4ad7d9afb6a60fbd4
X-Authorization-Timestamp: 1711662980

[ 客户端请求流程 ]

  • 客户端准备请求并发送给服务器。
  • 服务器通过验证HMAC完整性和时间戳有效性来验证请求。
  • 如果验证成功,服务器处理请求;否则,返回错误响应。

(2)服务器响应给客户端

  • 当服务器响应有效请求时,它会包含以下头部信息:

  • X-Response-Content-HMAC: HMAC哈希(整个响应体、当前Unix时间戳(UTC)和HMAC密钥)

  • X-Response-Content-TimeStamp: 当前Unix时间戳(UTC)

(response)
HTTP/2 200 OK
Date: Fri, 29 Mar 2024 06:50:49 GMT
Content-Type: text/html; charset=utf-8
Content-Length: 52
X-Response-Content-HMAC: 529c33aac3e33bf2a95d534f8b3ac61dee2ed79232d729e571dc669417a1a2ae
X-Response-Content-TimeStamp: 1711663027
Connection: close

{"result": "ok", "users": "test", "sub": 2840345654}

[ 响应流程 ]

  • 服务器准备响应数据并发送给客户端。
  • (附加)必要时,客户端可以验证响应数据的HMAC完整性。
  • 如果验证失败,客户端拒绝响应数据。
Server response HMAC verification successful
--------------
Response timestamp: 2024-03-29T09:25:31
Current time: 2024-03-29T09:25:31
Time difference: 0

附加说明

  • 对于使用GET还是POST没有严格规定;但出于安全考虑,通常更推荐使用POST。使用GET请求可能导致所有查询字符串被记录在Web访问日志中。
  • 始终使用UTC Unix时间戳作为时间信息,以确保一致性并避免时区相关问题。
  • HMAC计算的范围可以变化。虽然通常是对整个响应体进行哈希,但也可以选择性地对数据进行哈希,特别是在响应体内容较大时。
  • HMAC算法的选择(例如Hmac-SHA256、Hmac-SHA512)和密钥长度应基于安全需求和最佳实践。

重放请求防护

  • 服务器可以将已处理的请求存储在内存中(例如Redis),并在特定时间范围内丢弃重复请求,以防止重放攻击。
  • 此外,服务器可以通过将客户端在请求头中发送的时间戳(X-Authorization-Timestamp)与当前服务器时间进行比较,来增强重放攻击防护。如果时间戳超出某个时间范围,服务器可以丢弃该请求。

还有...

如果您觉得有帮助,请点个"星"🌟来支持进一步的改进。

下载工具