rvagg / rvagg/github-webhook-handler
X-Hub-Signature does not match blob signature
Dieses Issue hat noch niemand übernommen.
- Vorherrschende Sprache
- JavaScript
- Sterne
- 793
- Forks
- 121
- PR-Merge-Kennzahlen
- Keine gemergten PRs in 30 T.
Beschreibung
using my own function works but it crash with github-webhook-handler:
const createComparisonSignature = (body) => {
const hmac = crypto.createHmac('sha1', process.env.GITHUB_SECRET);
const self_signature = hmac.update(JSON.stringify(body)).digest('hex');
return `sha1=${self_signature}`; // shape in GitHub header
}
const compareSignatures = (signature, comparison_signature) => {
const source = Buffer.from(signature);
const comparison = Buffer.from(comparison_signature);
return crypto.timingSafeEqual(source, comparison); // constant time comparison
}
const { headers, body } = req;
const signature = headers['x-hub-signature'];
const comparison_signature = createComparisonSignature(req.body);
if (!compareSignatures(signature, comparison_signature)) {
return res.status(401).send('Mismatched signatures');
} else {
console.log("signature match")
const { action, ...payload } = body;
req.event_type = headers['x-github-event']; // one of: https://developer.github.com/v3/activity/events/types/
req.action = action;
req.payload = payload;
next();
}
return next()
please let me know if there is any solution
Beitragsleitfaden
Für dieses Repository ist kein Beitragsleitfaden indexiert
Erste Schritte
- Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
- Forke das Repository und arbeite in einem Branch.
- Öffne einen Pull Request, der die Issue-Nummer nennt.
Rechercherichtung
Im Issue wird keine Quelldatei und kein Test genannt. Beginne damit nachzuverfolgen, wie github-webhook-handler req.body empfängt und parst, und vergleiche anschließend die für die Signaturprüfung verwendeten Bytes mit dem ursprünglichen Request-Body. Fertig ist die Aufgabe, wenn eine gültige X-Hub-Signature ohne die gemeldete Abweichung konsistent verifiziert wird.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Bewertung
- Tech-Stack
- javascript, node.js
- Bereich
- api, backend
- Issue-Typ
- Bug
- Schwierigkeit
- 3/5
- Geschätzter Aufwand
- 1-2 Tage
- Aktivitätsstatus
- Veraltet
- Klarheit
- Muss geklärt werden
- Anfängerfreundlichkeit
- 35/100