GitScrum / Docs

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êteValeurObjectif
X-HeaderGitScrumIdentifie la requête comme provenant de GitScrum
User-AgentGitScrum WebhookIdentification standard du user agent
Content-Typeapplication/jsonFormat 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}), 200

HTTPS

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/webhooks

Liste 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é