You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Kolom "Secret" di pengaturan webhook GitHub digunakan untuk menambahkan lapisan keamanan tambahan pada webhook. Secret ini adalah token yang hanya diketahui oleh GitHub dan server Anda, yang digunakan untuk memastikan bahwa payload yang diterima oleh server Anda benar-benar berasal dari GitHub.
Cara Mengisi Kolom "Secret" di GitHub Webhook
Pilih atau Buat Secret:
Anda dapat memilih secret apa pun yang ingin Anda gunakan. Ini bisa berupa string acak atau frasa yang sulit ditebak. Misalnya: my_super_secret_token_12345.
Masukkan Secret ke dalam Pengaturan Webhook di GitHub:
Buka repository Anda di GitHub.
Pergi ke "Settings" -> "Webhooks".
Klik "Add webhook".
Tempel URL webhook Discord di bagian "Payload URL".
Pilih "application/json" sebagai content type.
Pilih event yang ingin Anda trigger (misalnya, push event).
Masukkan secret yang telah Anda pilih di kolom "Secret".
Klik "Add webhook".
Verifikasi Secret di Server Anda:
Pada server Anda, Anda perlu memverifikasi secret untuk memastikan payload yang diterima benar-benar dari GitHub. Berikut adalah contoh cara melakukannya dalam Node.js:
Contoh Verifikasi Secret di Node.js
Menginstal Dependensi:
Anda memerlukan beberapa dependensi tambahan. Jalankan perintah berikut untuk menginstalnya:
const DISCORD_WEBHOOK_URL = 'YOUR_DISCORD_WEBHOOK_URL';
const GITHUB_SECRET = 'my_super_secret_token_12345'; // Sama dengan secret yang diisi di GitHub
function verifySignature(req, res, buf, encoding) {
const signature = req.headers['x-hub-signature-256'];
if (!signature) {
res.status(401).send('Signature missing');
return;
}
app.post('/webhook', (req, res) => {
const githubPayload = req.body;
const discordMessage = {
content: New push by ${githubPayload.pusher.name}:\n${githubPayload.head_commit.message}\n<${githubPayload.head_commit.url}>
};
axios.post(DISCORD_WEBHOOK_URL, discordMessage)
.then(() => {
res.status(200).send('Webhook received and processed');
})
.catch((error) => {
console.error('Error sending message to Discord:', error);
res.status(500).send('Error processing webhook');
});
});
const PORT = process.env.PORT || 3000;
app.listen(PORT, () => {
console.log(Server is listening on port ${PORT});
});
3. Menjalankan Server:
Simpan script di atas ke dalam file server.js.
Jalankan server dengan node server.js.
Menguji Webhook dengan Secret
Setelah setup selesai:
Lakukan perubahan di repository GitHub Anda (misalnya, push commit baru).
GitHub akan mengirim payload ke server Anda dengan header x-hub-signature-256.
Server Anda akan memverifikasi signature menggunakan secret yang Anda tetapkan.
Jika verifikasi berhasil, server akan memproses payload dan mengirim pesan ke Discord.
Dengan langkah-langkah ini, Anda dapat memastikan bahwa payload yang diterima oleh server Anda benar-benar berasal dari GitHub, meningkatkan keamanan integrasi webhook Anda.
The text was updated successfully, but these errors were encountered:
Kolom "Secret" di pengaturan webhook GitHub digunakan untuk menambahkan lapisan keamanan tambahan pada webhook. Secret ini adalah token yang hanya diketahui oleh GitHub dan server Anda, yang digunakan untuk memastikan bahwa payload yang diterima oleh server Anda benar-benar berasal dari GitHub.
Cara Mengisi Kolom "Secret" di GitHub Webhook
Pilih atau Buat Secret:
Masukkan Secret ke dalam Pengaturan Webhook di GitHub:
Verifikasi Secret di Server Anda:
Contoh Verifikasi Secret di Node.js
Menginstal Dependensi:
Anda memerlukan beberapa dependensi tambahan. Jalankan perintah berikut untuk menginstalnya:
npm install express body-parser crypto
Script Server dengan Verifikasi Secret:
const express = require('express');
const bodyParser = require('body-parser');
const crypto = require('crypto');
const axios = require('axios');
const app = express();
app.use(bodyParser.json());
const DISCORD_WEBHOOK_URL = 'YOUR_DISCORD_WEBHOOK_URL';
const GITHUB_SECRET = 'my_super_secret_token_12345'; // Sama dengan secret yang diisi di GitHub
function verifySignature(req, res, buf, encoding) {
const signature = req.headers['x-hub-signature-256'];
if (!signature) {
res.status(401).send('Signature missing');
return;
}
const hmac = crypto.createHmac('sha256', GITHUB_SECRET);
const digest =
sha256=${hmac.update(buf).digest('hex')}
;if (signature !== digest) {
res.status(401).send('Signature mismatch');
}
}
app.use(bodyParser.json({ verify: verifySignature }));
app.post('/webhook', (req, res) => {
const githubPayload = req.body;
const discordMessage = {
content:
New push by ${githubPayload.pusher.name}:\n${githubPayload.head_commit.message}\n<${githubPayload.head_commit.url}>
};
axios.post(DISCORD_WEBHOOK_URL, discordMessage)
.then(() => {
res.status(200).send('Webhook received and processed');
})
.catch((error) => {
console.error('Error sending message to Discord:', error);
res.status(500).send('Error processing webhook');
});
});
const PORT = process.env.PORT || 3000;
app.listen(PORT, () => {
console.log(
Server is listening on port ${PORT}
);});
3. Menjalankan Server:
Menguji Webhook dengan Secret
Setelah setup selesai:
Dengan langkah-langkah ini, Anda dapat memastikan bahwa payload yang diterima oleh server Anda benar-benar berasal dari GitHub, meningkatkan keamanan integrasi webhook Anda.
The text was updated successfully, but these errors were encountered: