Sécurité
Sécurité des webhooks GitScrum : en-têtes personnalisés, exigences HTTPS, considérations IP et vérification des requêtes.
Protégez vos endpoints de webhook pour vous assurer que seules les requêtes légitimes de GitScrum sont traitées.
En-têtes de la Requête
Chaque livraison de webhook GitScrum inclut ces en-têtes personnalisés :
| En-tête | Valeur | Objectif |
|---|---|---|
X-Header | GitScrum | Identifie la requête comme provenant de GitScrum |
User-Agent | GitScrum Webhook | Identification standard du user agent |
Content-Type | application/json | Format du payload |
Vérifier l'Origine
Vérifiez l'en-tête X-Header pour confirmer que les requêtes proviennent de GitScrum :
app.post('/webhooks/gitscrum', (req, res) => {
// Verify the request comes from GitScrum
if (req.headers['x-header'] !== 'GitScrum') {
return res.status(403).json({ error: 'Forbidden' });
}
// Process the webhook
const event = req.body;
// ...
res.status(200).json({ received: true });
});@app.route('/webhooks/gitscrum', methods=['POST'])
def webhook():
# Verify the request comes from GitScrum
if request.headers.get('X-Header') != 'GitScrum':
return jsonify({"error": "Forbidden"}), 403
event = request.get_json()
# Process the webhook...
return jsonify({"received": True}), 200HTTPS
Utilisez toujours HTTPS pour vos URLs d'endpoints de webhook. HTTPS chiffre les données en transit, empêchant :
- L'interception du payload par des tiers
- Les attaques man-in-the-middle
- La falsification des données
Bien que les endpoints HTTP fonctionnent, GitScrum recommande fortement HTTPS pour toutes les configurations de webhook en production.
Sécurité de l'URL de l'Endpoint
Protégez votre endpoint de webhook avec des mesures supplémentaires :
Utilisez un Chemin Unique
Utilisez un chemin imprévisible pour votre endpoint de webhook :
✅ https://your-server.com/webhooks/gs-a8x92j4k
❌ https://your-server.com/webhooksListe d'IPs Autorisées
Si votre infrastructure le supporte, configurez des règles de pare-feu pour accepter uniquement les requêtes des plages d'IP de GitScrum. Contactez le support GitScrum pour les informations IP actuelles.
Limitation de Débit
Implémentez une limitation de débit sur votre endpoint de webhook pour vous protéger contre les pics de trafic inattendus :
const rateLimit = require('express-rate-limit');
const webhookLimiter = rateLimit({
windowMs: 1 * 60 * 1000, // 1 minute
max: 100, // 100 requests per minute
});
app.post('/webhooks/gitscrum', webhookLimiter, (req, res) => {
// Process webhook
});Gestion des Données
Données Sensibles
Les payloads de webhook peuvent contenir :
- Des titres et descriptions de tâches avec des informations sensibles du projet
- Des noms et noms d'utilisateur des membres de l'équipe
- Des détails de sprints et de projets
Traitez les données de webhook avec les mêmes standards de sécurité que vos autres données professionnelles.
Rétention des Données
GitScrum enregistre les livraisons de webhook incluant le corps du payload et le code de statut de la réponse. Ces logs sont stockés dans le journal des livraisons de webhook et sont accessibles via le projet.
Validation du Payload
Validez toujours la structure du payload avant le traitement :
app.post('/webhooks/gitscrum', (req, res) => {
const { data } = req.body;
if (!data || typeof data !== 'object') {
return res.status(400).json({ error: 'Invalid payload' });
}
// Validate expected fields exist
if (!data.uuid) {
return res.status(400).json({ error: 'Missing uuid' });
}
// Process valid webhook
// ...
res.status(200).json({ received: true });
});Associé
- Format du Payload — Référence de la structure du payload
- Bonnes Pratiques — Gestion des webhooks en production
- Dépannage — Problèmes courants et solutions