增强 Webhook 安全性 我们不断致力于提升开发者体验和 Messaging API 的安全性,并荣幸地宣布已将 Webhook 签名验证功能添加到 Messaging API 文档中。截至本次更新: 该文档现在完整解释了机器人服务器在从 LINE 平台接收 webhook 请求时应如何验证 webhook 签名。 开发人员指南已更新,将签名验证作为推荐的最佳实践之一。 为什么签名验证如此重要🚨 当用户与官方帐户进行交互时(通过将其添加为好友、发送消息或单击丰富的菜单操作),LINE 平台会向Webhook URLLINE 开发者控制台中配置的 HTTP POST webhook 发送。 然而,通过公共网络传输的 Webhook 可能会被伪造、重放或篡改。如果不验证来源和完整性,恶意攻击者可能会伪造请求或更改 Webhook 负载来误导您的机器人。 通过验证 HTTP 标头中包含的签名,您的服务器证明: 该消息确实来自 LINE。 请求在传输过程中未被更改。 您可以放心地信任和处理随附的事件数据。 跳过此步骤可能会使您的机器人面临安全漏洞、网络钓鱼威胁和数据完整性问题。 Webhook 安全性 签名验证工作流程概述 以下是端到端的概述: LINE 平台使用您频道的频道密钥和 HMAC-SHA256 算法对每个 webhook 有效负载进行签名。 生成的签名经过 base64 编码并添加到X‑LINE‑Signaturewebhook 请求的 HTTP 标头中。 收到 webhook 后,您的机器人会: 读取原始请求主体(JSON)。 使用您的频道密钥计算其自己的 HMAC-SHA256 摘要。 对摘要进行 Base64 编码并将其与提供的X-LINE-Signature标头进行比较。 如果签名匹配,则表示该 Webhook 已通过身份验证且未被篡改。如果签名不匹配,则拒绝该请求并返回 HTTP 400 Bad Request 响应。 这确保了消息的真实性、数据的完整性和安全的 webhook 处理。 必要的准备工作 在验证签名之前,请确保您具有以下内容: 频道秘密 登录 LINE 开发者控制台并打开您的频道。 在基本设置部分下,复制频道机密。 将其安全地存储在您的服务器上(例如,环境变量或秘密管理器)。 原始请求主体访问 签名必须使用精确的原始 JSON 主体