Documentación de Webhooks
Aprenda a configurar webhooks para recibir alertas en tiempo real de Leicbit
Resumen
Los webhooks de Leicbit permiten recibir notificaciones en tiempo real cuando se detectan eventos de seguridad en sus dominios monitorizados. En lugar de revisar alertas manualmente, los webhooks envían solicitudes HTTP POST a su endpoint cuando hay nuevos incidentes.
Notificaciones en tiempo real
Reciba alertas instantáneas cuando se detecte robo de credenciales o brechas en sus dominios.
Entrega segura
Todas las solicitudes webhook están firmadas y verificadas para garantizar integridad y autenticidad.
Integración sencilla
Proceso de configuración simple con documentación completa y herramientas de prueba.
Información detallada
Cada webhook contiene datos completos sobre el evento de seguridad para actuar de inmediato.
Guía de configuración
Siga estos pasos para configurar webhooks en su cuenta Leicbit:
Paso 1: Acceder a configuración
- Inicie sesión en el panel Leicbit
- Vaya a Configuración en el menú principal
- Haga clic en la pestaña Integración
Paso 2: Configurar webhook
- Active el webhook marcando "Enable Webhook"
- Introduzca la URL del webhook en el campo "Webhook URL"
- Haga clic en "Test Webhook" para verificar la conexión
- Haga clic en "Save Settings" para activar el webhook
Requisitos de la URL del webhook
- Debe ser una URL HTTPS válida (HTTP no está soportado por seguridad)
- Debe ser accesible públicamente desde internet
- Debe responder con código HTTP 200 para confirmar recepción
- Debe responder en menos de 10 segundos para evitar timeout
Payload del webhook
Cada solicitud webhook contiene información detallada sobre el evento de seguridad. Estructura del 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"
}El webhook se envía al finalizar un escaneo que encontró nuevas credenciales filtradas, resumiendo lo detectado en sus dominios. Para detalle por credencial, use el panel o la Findings API.
Campos del payload
| Campo | Tipo | Descripción |
|---|---|---|
event |
string | Nombre del evento. Actualmente siempre credentials.detected. |
total_new_alerts |
integer | Total de nuevas alertas de credenciales filtradas en este escaneo. |
domains |
array | Desglose por dominio: { "domain", "new_alerts" }. |
detected_at |
ISO 8601 | Cuándo se completó el escaneo (UTC). |
Tipos de evento
Leicbit envía actualmente un único evento webhook. Pueden añadirse más; trate siempre el campo event en lugar de asumir un conjunto fijo.
Se dispara cuando: Un escaneo encuentra nuevas credenciales filtradas en uno o más dominios.
Payload: Resumen del escaneo — total_new_alerts más desglose por dominio.
Acción requerida: Revise las nuevas alertas en el panel y rote las credenciales afectadas.
Seguridad
Leicbit implementa varias medidas para garantizar integridad y autenticidad de las solicitudes webhook:
Solo HTTPS
Todas las solicitudes webhook se envían por HTTPS. Los endpoints HTTP no están soportados.
Verificación de solicitud
Cada solicitud incluye un header de firma para verificar que proviene de Leicbit:
X-Leicbit-Signature: t=1234567890,v1=abc123def456...Proceso de verificación
Para verificar una solicitud webhook:
- Extraiga timestamp y firma del header X-Leicbit-Signature
- Concatene el timestamp y el cuerpo de la solicitud
- Genere HMAC-SHA256 usando su webhook secret
- Compare la firma generada con la recibida
Pruebas
Leicbit ofrece herramientas integradas para verificar su configuración de webhook:
Botón Test Webhook
Use el botón "Test Webhook" en configuración para enviar un payload de prueba a su 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"
}Respuesta esperada
Su endpoint debe responder con:
- Estado HTTP: 200 OK
- Tiempo de respuesta: Menos de 10 segundos
- Content-Type: application/json (opcional)
Solución de problemas
Problemas comunes y soluciones:
La prueba falla con "Connection refused"
Solución: Asegúrese de que el endpoint sea públicamente accesible y no esté detrás de un firewall que bloquee solicitudes entrantes.
El webhook devuelve error HTTP 500
Solución: Revise los logs del servidor y confirme que el endpoint acepta el formato del payload.
El webhook expira tras 10 segundos
Solución: Optimice el handler para responder rápido. Considere procesar el webhook de forma asíncrona.
No recibo notificaciones webhook
Solución: Verifique que los webhooks estén activos y la URL sea correcta. Pruebe el webhook para confirmar.
Ejemplos
Ejemplos de cómo manejar webhooks en distintos lenguajes:
Ejemplo 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);Ejemplo 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})Ejemplo 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]);¿Necesita ayuda?
Si necesita asistencia con la configuración de webhook o tiene preguntas sobre la integración: