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çalho | Valor | Finalidade |
|---|---|---|
X-Header | GitScrum | Identifica a requisição como originada do GitScrum |
User-Agent | GitScrum Webhook | Identificação padrão do user agent |
Content-Type | application/json | Formato 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}), 200HTTPS
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/webhooksLista 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
- Formato do Payload — Referência da estrutura do payload
- Boas Práticas — Tratamento de webhooks em produção
- Solução de Problemas — Problemas comuns e soluções