GitScrum / Docs

Segurança

Segurança de webhooks do GitScrum: cabeçalhos personalizados, requisitos HTTPS, considerações de IP e verificação de requisições.

Proteja seus endpoints de webhook para garantir que apenas requisições legítimas do GitScrum sejam processadas.

Cabeçalhos da Requisição

Cada entrega de webhook do GitScrum inclui estes cabeçalhos personalizados:

CabeçalhoValorFinalidade
X-HeaderGitScrumIdentifica a requisição como originada do GitScrum
User-AgentGitScrum WebhookIdentificação padrão do user agent
Content-Typeapplication/jsonFormato do payload

Verificando a Origem

Verifique o cabeçalho X-Header para confirmar que as requisições são originadas do 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

Sempre use HTTPS para suas URLs de endpoint de webhook. O HTTPS criptografa os dados em trânsito, prevenindo:

  • Interceptação de payload por terceiros
  • Ataques man-in-the-middle
  • Adulteração de dados

Embora endpoints HTTP funcionem, o GitScrum recomenda fortemente HTTPS para todas as configurações de webhook em produção.

Segurança da URL do Endpoint

Proteja seu endpoint de webhook com medidas adicionais:

Use um Caminho Único

Use um caminho imprevisível para seu endpoint de webhook:

✅ https://your-server.com/webhooks/gs-a8x92j4k
❌ https://your-server.com/webhooks

Lista de IPs Permitidos

Se sua infraestrutura suportar, configure regras de firewall para aceitar apenas requisições dos intervalos de IP do GitScrum. Entre em contato com o suporte do GitScrum para informações atuais de IP.

Limitação de Taxa

Implemente limitação de taxa no seu endpoint de webhook para proteção contra picos inesperados de tráfego:

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
});

Tratamento de Dados

Dados Sensíveis

Os payloads de webhook podem conter:

  • Títulos e descrições de tarefas com informações sensíveis do projeto
  • Nomes e usernames de membros da equipe
  • Detalhes de sprints e projetos

Trate os dados de webhook com os mesmos padrões de segurança dos seus outros dados empresariais.

Retenção de Dados

O GitScrum registra as entregas de webhook incluindo o corpo do payload e o código de status da resposta. Esses logs são armazenados no log de entregas de webhook e são acessíveis através do projeto.

Validação do Payload

Sempre valide a estrutura do payload antes de processar:

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 });
});

Relacionado