使用 HMAC-SHA 256(基于 SHA 256 的哈希消息认证码)保护您的项目、任务和问题的 Webhook。Zoho Projects 提供使用 HMAC-SHA 256 保护 Webhook 的选项,这是一种行业标准的哈希机制,可确保并维护 Webhook 的真实性和完整性。
HMAC 有助于检查:
Webhook 请求是否由 Zoho Projects 发送(密钥必须仅由 Zoho Projects 和接收应用程序知道)。
Webhook 内容是否在传输过程中被篡改。
为什么要保护 Webhook?
Webhook 是一个应用程序向另一个应用程序发送的 HTTP 请求,用于提供实时数据。在安全攻击中,攻击者可以通过发送欺诈性 Webhook 并提取敏感数据来轻松冒充合法提供商。因此,Webhook 需要安全保护,以确保您的应用程序仅监听来自可信来源的真实事件,而不会被虚假或有害的请求所欺骗。
优势:
避免报告中出现错误数据
避免未经授权的更新
避免安全漏洞
启用 Webhook 安全性
用户可以在添加或编辑 Webhook 时启用 Webhook 安全设置。
前往“设置”>“自动化/问题跟踪器”>“Webhook”。
对于新建的 Webhook,请在 Webhook 表单中填写详细信息并切换“安全设置”。对于现有的 Webhook,请选择要启用安全性的 Webhook。
输入 HMAC 密钥。用户也可以点击“生成”按钮生成 HMAC 密钥。
点击“保存”。
注意: HMAC 密钥长度应为 16 到 128 个字符。
Zoho Projects 中的 Webhook 安全性如何运作?
当从 Zoho Projects 发送 Webhook 时,请求标头中会包含一个名为 X-ZP-WEBHOOK-SIGNATURE 的 HMAC 签名。收到 Webhook 请求后,接收应用程序将使用相同的密钥生成 HMAC 签名,并将结果与请求头中的值进行比较。如果值匹配,则数据合法;否则,数据已被篡改。
生成 HMAC 签名
Zoho Projects 使用 HMAC-SHA256 算法计算 Webhook 有效负载的签名,并将结果以 base64 格式发送到请求头中。以下是示例数据的说明:
payload |
{{"requests":{"request_name":"Test Name"},"notifications": {"operation_type":"RequestSigningSuccess"}} |
secret_key |
thisisthesamplekeyfortestingpurposes |
base64encode(HMAC SHA-256(payload+secret_key)) |
drbSrM4H816RYKpZiRBLddUa0yHaTrwjtY04sIZFZus= |
下图展示了 webhook 请求头(HMAC 头)的样子:
验证接收应用程序中的 HMAC 签名
您必须将有效负载读取为字符串,以避免以 JSON 格式读取时密钥顺序发生改变。
使用密钥计算有效负载的 HMAC SHA-256 哈希值,并对结果进行 Base64 编码。
将步骤 2 中获得的值与接收到的 HMAC 标头 (X-ZP-WEBHOOK-SIGNATURE) 的值进行比较。如果存在不匹配,则拒绝 webhook 请求。
以下是一个用于验证 HMAC 签名的 Java 代码片段示例: