ETH官方钱包

創(chuàng)作內(nèi)容

7 GP

【密技】透過設(shè)定 secret 驗(yàn)證 GitHub 的 Webhook

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

GitHub 在設(shè)定 Webhook 的頁(yè)面有提供輸入 secret 的地方,在那邊輸入一個(gè)你的 secret key


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

接下來我用 node.js 跟 koa + koa-router + koa-bodyparser 來做示範(fàn)


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

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

昨天的發(fā)現(xiàn),我個(gè)人 secret 是去線上密碼產(chǎn)生器產(chǎn)了一個(gè) 32 位數(shù)的大小寫英數(shù)字混和字串,紀(jì)錄一下順便給不知道的人看。
引用網(wǎng)址:http://www.jamesdambrosio.com/TrackBack.php?sn=3987394
All rights reserved. 版權(quán)所有,保留一切權(quán)利

相關(guān)創(chuàng)作

同標(biāo)籤作品搜尋:GitHub|SHA1|secret|webhook|HMAC|crypto

留言共 0 篇留言

我要留言提醒:您尚未登入,請(qǐng)先登入再留言

7喜歡★moontai0724 可決定是否刪除您的留言,請(qǐng)勿發(fā)表違反站規(guī)文字。

前一篇:【腳本】巴哈黑名單、關(guān)鍵... 後一篇:我以為我不會(huì)哭...


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

face我們了解您不想看到廣告的心情? 若您願(yuàn)意支持巴哈姆特永續(xù)經(jīng)營(yíng),請(qǐng)將 gamer.com.tw 加入廣告阻擋工具的白名單中,謝謝 !【教學(xué)】