npm 包 secure-github-webhook 使用教程

阅读时长 5 分钟读完

在现代软件开发过程中,GitHub Webhook 是一个非常重要的组件。它可以让你在代码提交、合并等操作发生时自动触发一些行为,例如运行测试、部署服务等等。然而,安全性始终是我们需要考虑的问题。如果没有正确地保护我们的 Webhook,那么黑客可能会利用这一漏洞来攻击我们的系统。在本文中,我们介绍一个名为 secure-github-webhook 的 npm 包,以及如何使用它来保护您的 GitHub Webhook。

npm 包 secure-github-webhook 简介

secure-github-webhook 是一个开源的 npm 包,它提供了一种简单且可靠的方法来保护您的 GitHub Webhook。它使用 SHA1 算法对传入的 Webhook payload 进行计算,然后将计算结果与 GitHub 提供的签名进行比对。如果签名匹配,那么 Webhook 就是来自于 GitHub 的,否则请求将被拒绝。这种方法称为“签名校验”。

安装 secure-github-webhook

要在您的项目中使用 secure-github-webhook,您需要首先安装它。您可以使用以下命令来安装:

使用 secure-github-webhook

当您已经安装了 secure-github-webhook 后,就可以开始使用它来保护您的 GitHub Webhook 了。以下是一个简单的示例:

-- -------------------- ---- -------
----- ------- - -------------------
----- ---------- - -----------------------
----- ------------------- - ---------------------------------

----- --- - ----------
----- ---- - -----

---------------------------

-------------------- ----------------------------------- ----- ---- -- -
  -- ----- ------ ------- -----
---

---------------- -- -- -
  ------------------- --------- -- ---- -----------
---

在这个例子中,我们创建了一个 express 应用程序,并将 secure-github-webhook 导入了它。我们定义了一个针对 GitHub Webhook 的 POST 路由,路径为 “/webhook”。我们通过将“secret_key”作为参数传递给 verifyGithubWebhook() 函数来启用签名校验。如果校验失败,请求将不会被处理。否则,我们在回调函数中处理请求。

secure-github-webhook 的高级用法

secure-github-webhook 提供了一些高级用法,可以满足一些特定的需求。以下是其中的一些示例。

获取签名

如果您想要手动获取 GitHub Webhook 的签名,您可以使用以下代码:

其中,payload 是进行签名计算的数据,secret 是 GitHub Webhook 的 secret key。

延迟校验

如果您希望在完全处理 Webhook 请求之前进行更多的校验(例如验证 sender 或 repository),您可以使用 delayVerify 选项。以下是示例代码:

-- -------------------- ---- -------
----- ------- - -
  ------------ -----
  ------- ------------
--

----- - --------------- - - ------------------------------------------

-------------------- ----- ---- -- -
  ----- -------- - --------------------------

  -- ---------- -
    -- ------
  -
---

在这里,我们将 delayVerify 选项设置为 true,这意味着我们可以在处理 GitHub Webhook 之前先获取签名并执行其他校验。只有在验证通过后,我们才会继续处理 Webhook 请求。

仅校验指定事件

如果您只想验证某些事件,而不是所有事件,您可以使用 verifyEvent 选项,例如:

在这个例子中,我们只验证 push 和 pull_request 事件。其他事件将被忽略。

结论

secure-github-webhook 让我们可以非常容易地保护我们的 GitHub Webhook,从而防止黑客攻击。它提供了简单的接口和许多配置选项。希望本文提供的教程和示例代码能够帮助您在自己的项目中使用 secure-github-webhook。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6005662f81e8991b448e2109

纠错
反馈