創作內容

7 GP

【密技】透過設定 secret 驗證 GitHub 的 Webhook

作者:月太げつたい⚓│2018-05-13 14:23:32│巴幣:17│人氣:1572
原本是使用確認 header 中的 user-agent 是不是有包含 GitHub 而已,但這樣很容易就會被攻擊了。
因此就要來設定個驗證,才不會到時輕易的就被攻擊。

GitHub 在設定 Webhook 的頁面有提供輸入 secret 的地方,在那邊輸入一個你的 secret key


在往後收到 Webhook 的時候,在 header 中就會有 X-Hub-Signature 這個欄位,這個的參數會是 sha1=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 這樣的。
根據官方文件,這個 HMAC-SHA1 是把 secret 和 body 做 HMAC 的雜湊運算,計算出 SHA1。

接下來我用 node.js 跟 koa + koa-router + koa-bodyparser 來做示範


圖中 10~23 行的部分就是 Webhook 進來之後處理的地方,我先確認 user-agent 中是不是有 GitHub,如果是的話就進行驗證。
這邊用到了 crypto 的 package,這個 node 內已經有了,直接 require 就好。

13 行部份就是建立一個 HMAC,設定演算為 SHA1,key 是 "SECRETTOKEN",然後把 ctx.request.rawBody 進行演算,輸出 16 進位的 SHA1。
如果算出來的 SHA1 和 x-hub-signature 內的相同,代表的確是來自 GitHub 的訊息,內容也沒有被竄改過。

昨天的發現,我個人 secret 是去線上密碼產生器產了一個 32 位數的大小寫英數字混和字串,紀錄一下順便給不知道的人看。
引用網址:https://home.gamer.com.tw/TrackBack.php?sn=3987394
All rights reserved. 版權所有,保留一切權利

相關創作

同標籤作品搜尋:GitHub|SHA1|secret|webhook|HMAC|crypto

留言共 0 篇留言

我要留言提醒:您尚未登入,請先登入再留言

7喜歡★moontai0724 可決定是否刪除您的留言,請勿發表違反站規文字。

前一篇:【腳本】巴哈黑名單、關鍵... 後一篇:我以為我不會哭...

追蹤私訊切換新版閱覽

作品資料夾

robert286 ლ(´•д• ̀ლ
ლ(´•д• ̀ლ看更多我要大聲說昨天23:54


face基於日前微軟官方表示 Internet Explorer 不再支援新的網路標準,可能無法使用新的應用程式來呈現網站內容,在瀏覽器支援度及網站安全性的雙重考量下,為了讓巴友們有更好的使用體驗,巴哈姆特即將於 2019年9月2日 停止支援 Internet Explorer 瀏覽器的頁面呈現和功能。
屆時建議您使用下述瀏覽器來瀏覽巴哈姆特:
。Google Chrome(推薦)
。Mozilla Firefox
。Microsoft Edge(Windows10以上的作業系統版本才可使用)

face我們了解您不想看到廣告的心情⋯ 若您願意支持巴哈姆特永續經營,請將 gamer.com.tw 加入廣告阻擋工具的白名單中,謝謝 !【教學】