Documentação de Webhooks
Aprenda a configurar webhooks para receber alertas em tempo real do Leicbit
Visão geral
Os webhooks do Leicbit permitem receber notificações em tempo real quando eventos de segurança são detectados nos domínios monitorados. Em vez de verificar alertas manualmente, os webhooks enviam requisições HTTP POST ao seu endpoint sempre que novos incidentes forem encontrados.
Notificações em tempo real
Receba alertas instantâneos quando roubo de credenciais ou breaches forem detectados nos seus domínios.
Entrega segura
Todas as requisições webhook são assinadas e verificadas para garantir integridade e autenticidade.
Integração simples
Processo de configuração simples com documentação completa e ferramentas de teste.
Informações detalhadas
Cada webhook contém dados abrangentes sobre o evento de segurança para ação imediata.
Guia de configuração
Siga estes passos para configurar webhooks na sua conta Leicbit:
Passo 1: Acessar configurações
- Entre no painel Leicbit
- Vá em Configurações no menu principal
- Clique na aba Integração
Passo 2: Configurar webhook
- Ative o webhook marcando "Enable Webhook"
- Informe a URL do webhook no campo "Webhook URL"
- Clique em "Test Webhook" para verificar a conexão
- Clique em "Save Settings" para ativar o webhook
Requisitos da URL do webhook
- Deve ser uma URL HTTPS válida (HTTP não é suportado por segurança)
- Deve ser acessível publicamente pela internet
- Deve responder com status HTTP 200 para confirmar recebimento
- Deve responder em até 10 segundos para evitar timeout
Payload do webhook
Cada requisição webhook contém informações detalhadas sobre o evento de segurança. Estrutura do payload:
{
"event": "credentials.detected",
"total_new_alerts": 12,
"domains": [
{ "domain": "example.com", "new_alerts": 9 },
{ "domain": "shop.example.com", "new_alerts": 3 }
],
"detected_at": "2026-01-15T10:30:00+00:00"
}O webhook é enviado ao final de uma varredura que encontrou novas credenciais vazadas, resumindo o detectado nos domínios monitorados. Para detalhe por credencial, use o painel ou a Findings API.
Campos do payload
| Campo | Tipo | Descrição |
|---|---|---|
event |
string | Nome do evento. Atualmente sempre credentials.detected. |
total_new_alerts |
integer | Total de novos alertas de credenciais vazadas nesta varredura. |
domains |
array | Detalhamento por domínio: { "domain", "new_alerts" }. |
detected_at |
ISO 8601 | Quando a varredura foi concluída (UTC). |
Tipos de evento
O Leicbit envia atualmente um único evento webhook. Outros podem ser adicionados; sempre trate pelo campo event em vez de assumir um conjunto fixo.
Disparado quando: Uma varredura encontra novas credenciais vazadas em um ou mais domínios.
Payload: Resumo da varredura — total_new_alerts mais detalhamento por domínio.
Ação necessária: Revise os novos alertas no painel e rotacione as credenciais afetadas.
Segurança
O Leicbit implementa várias medidas para garantir integridade e autenticidade das requisições webhook:
Somente HTTPS
Todas as requisições webhook são enviadas via HTTPS. Endpoints HTTP não são suportados.
Verificação de requisição
Cada requisição inclui um header de assinatura para verificar que veio do Leicbit:
X-Leicbit-Signature: t=1234567890,v1=abc123def456...Processo de verificação
Para verificar uma requisição webhook:
- Extraia timestamp e assinatura do header X-Leicbit-Signature
- Concatene o timestamp e o corpo da requisição
- Gere HMAC-SHA256 usando seu webhook secret
- Compare a assinatura gerada com a recebida
Testes
O Leicbit oferece ferramentas integradas para verificar sua configuração de webhook:
Botão Test Webhook
Use o botão "Test Webhook" nas configurações para enviar um payload de teste ao seu endpoint:
{
"event_id": "test_1234567890",
"event_type": "test_webhook",
"timestamp": "2024-01-15T10:30:00Z",
"domain": {
"id": "test_domain",
"name": "test.example.com",
"description": "Test domain for webhook verification"
},
"alert": {
"id": "test_alert",
"severity": "info",
"title": "Test Webhook",
"description": "This is a test webhook to verify your endpoint configuration",
"details": {
"test": true,
"message": "If you receive this, your webhook is working correctly"
}
},
"user": {
"id": "test_user",
"email": "[email protected]"
},
"webhook_id": "test_webhook"
}Resposta esperada
Seu endpoint deve responder com:
- Status HTTP: 200 OK
- Tempo de resposta: Menos de 10 segundos
- Content-Type: application/json (opcional)
Solução de problemas
Problemas comuns e soluções:
Teste falha com "Connection refused"
Solução: Garanta que o endpoint seja publicamente acessível e não esteja atrás de firewall que bloqueie requisições entrantes.
Webhook retorna erro HTTP 500
Solução: Verifique os logs do servidor e confirme que o endpoint aceita o formato do payload.
Webhook expira após 10 segundos
Solução: Otimize o handler para responder rápido. Considere processar o webhook de forma assíncrona.
Não recebo notificações webhook
Solução: Verifique se webhooks estão ativos e a URL está correta. Teste o webhook para confirmar.
Exemplos
Exemplos de como tratar webhooks em diferentes linguagens:
Exemplo Node.js
const express = require('express');
const crypto = require('crypto');
const app = express();
app.use(express.json());
app.post('/webhook', (req, res) => {
const signature = req.headers['x-leicbit-signature'];
const body = JSON.stringify(req.body);
const expectedSignature = crypto
.createHmac('sha256', process.env.WEBHOOK_SECRET)
.update(body)
.digest('hex');
if (signature !== `v1=${expectedSignature}`) {
return res.status(401).json({ error: 'Invalid signature' });
}
const { event_type, alert, domain } = req.body;
// Handle event…
res.status(200).json({ received: true });
});
app.listen(3000);Exemplo Python
from flask import Flask, request, jsonify
import hmac, hashlib, os
app = Flask(__name__)
@app.route('/webhook', methods=['POST'])
def webhook():
signature = request.headers.get('X-Leicbit-Signature')
body = request.get_data()
expected = hmac.new(
os.environ['WEBHOOK_SECRET'].encode(), body, hashlib.sha256
).hexdigest()
if signature != f'v1={expected}':
return jsonify({'error': 'Invalid signature'}), 401
# Handle event…
return jsonify({'received': True})Exemplo PHP
<?php
$secret = $_ENV['WEBHOOK_SECRET'];
$signature = $_SERVER['HTTP_X_LEICBIT_SIGNATURE'] ?? '';
$body = file_get_contents('php://input');
$expected = 'v1=' . hash_hmac('sha256', $body, $secret);
if (!hash_equals($signature, $expected)) {
http_response_code(401);
exit(json_encode(['error' => 'Invalid signature']));
}
// Handle event…
http_response_code(200);
echo json_encode(['received' => true]);Precisa de ajuda?
Se precisar de assistência com configuração de webhook ou dúvidas sobre a integração: