Sus datos se quedan donde deben estar.
Un resumen para responsables de TI y seguridad: cómo se despliega SnagBane, cómo controla el acceso, cómo está reforzado y qué sale exactamente de su servidor.
Despliegue y datos
- Autoalojado. SnagBane es software que usted instala con Docker, en un VPS o en cPanel. Formularios, respuestas, archivos y cuentas se guardan en su propia base de datos (MySQL/MariaDB, PostgreSQL o SQLite) y en su propio almacenamiento.
- Sin contraseñas predeterminadas compartidas. La base de datos de Docker arranca con una contraseña de instalación que el instalador sustituye por una aleatoria y robusta;
php artisan snagbane:db-passwordla cambia más adelante. - Almacenamiento privado de archivos fuera de la raíz web, con nombres de archivo aleatorios.
- Funciona en una red interna. El plan Free no necesita acceso a internet; Business y Enterprise necesitan HTTPS saliente para la comprobación de licencia.
Identidad y acceso
- Inicio de sesión único con Microsoft Entra ID, Google Workspace, Okta y cualquier proveedor de identidad SAML 2.0 como AD FS o Ping (Business y Enterprise): solo respuestas SAML firmadas a inicios de sesión que inició SnagBane, cada una aceptada una vez. Los inicios de sesión del directorio nunca crean administradores, y la asignación de roles por grupos solo puede subir un rol.
- Verificación en dos pasos para cuentas de SnagBane: una aplicación de autenticación (su clave de configuración puede ir a un gestor de contraseñas) o llaves de seguridad FIDO2 y llaves de acceso — YubiKey, Windows Hello, Gestor de contraseñas de Google, llavero de iCloud. Primero se pide el método más fuerte; los códigos de recuperación de un solo uso son la vía de vuelta, nunca la contraseña sola. Puede ser obligatoria para administradores, y un administrador puede pedir que se configure de nuevo.
- Bloqueo de cuenta tras varios inicios de sesión fallidos (también con direcciones desconocidas, para que no se puedan descubrir cuentas), reglas de contraseña estrictas y hash bcrypt.
- Roles y espacios de trabajo: propietarios, administradores, editores, lectores y encuestados; reglas de acceso por formulario, portal y espacio de trabajo. Los visitantes sin acceso solo ven el título y la descripción, nunca las preguntas.
- Las personas nuevas no tienen permisos de edición por defecto: el rol predeterminado es encuestado.
Seguridad de la aplicación
- Content Security Policy estricta con nonces por petición, protección contra clickjacking, HSTS en HTTPS, nosniff y una política de referer. Protección contra CSRF y fijación de sesión.
- Los archivos subidos se comprueban con una lista de extensiones permitidas y análisis del contenido; se bloquean scripts, ejecutables, SVG/HTML y extensiones dobles.
- Protección SSRF en cada webhook e integración: se bloquean las direcciones privadas y de metadatos (a prueba de DNS rebinding), con una lista de permitidos para hosts internos de confianza.
- Secretos cifrados con su clave de aplicación. Los tokens de API, los enlaces de aprobación, de edición y de reanudación se guardan solo como hashes.
- Validación en el servidor de cada respuesta, ruta de ramificación y cálculo; las soluciones de los cuestionarios nunca llegan al navegador; la inyección de fórmulas se neutraliza en las exportaciones a CSV, Excel y Google Sheets.
- Enlaces construidos a partir de su dirección configurada, nunca a partir de la cabecera Host de la petición.
Supervisión y auditoría
- Registro de auditoría de inicios de sesión, administración, exportaciones y decisiones de aprobación, incluido quién cambió un aprobador y por qué.
- Envío al SIEM: cada entrada también se escribe como una línea JSON plana en un archivo diario, lista para Microsoft Sentinel, Elastic o un Splunk Universal Forwarder. Exportación en CSV o JSON Lines.
- Webhooks firmados (HMAC-SHA256 con marca de tiempo) para que los receptores puedan verificar cada llamada.
Actualizaciones y cadena de suministro
- Actualizaciones firmadas: cada versión se verifica con Ed25519 antes de instalarse y se aplica en modo mantenimiento, con vuelta atrás en un clic.
- Actualizaciones limpias: los archivos eliminados en una versión también se eliminan de su servidor, así que una instalación actualizada equivale a una instalación nueva.
- Las pruebas de licencia se firman y se verifican con una clave integrada en la aplicación: ningún ajuste de entorno puede desbloquear un plan de pago.
Ajustes que usted controla
Los valores seguros se aplican desde el principio. En Configuración → Seguridad puede reforzarlos aún más:
- Exigir autenticación en dos factores a los administradores
- Longitud mínima de contraseña (mayúsculas, minúsculas y dígitos siempre obligatorios) y duración de la sesión
- Extensiones de archivo permitidas y tamaño máximo de subida
- Hosts privados permitidos para webhooks e integraciones; todo lo interno se bloquea en caso contrario
- Ubicaciones y cuentas de SharePoint, OneDrive y Google Drive que pueden usar los editores (los administradores pueden elegir cualquiera)
- Si las cuentas de Microsoft, Google y Okta pueden usar también una contraseña; las cuentas desactivadas en Entra ID o Google Workspace ya no pueden iniciar sesión con ella
- Escribir cada respuesta en un archivo de registro JSON para su recolector de logs
- Conservación de datos: eliminar automáticamente las respuestas antiguas tras el periodo que elija (vea RGPD)

Arquitectura
Una única aplicación web en su servidor: ningún servicio en la nube nuestro en el camino de sus datos.
- Aplicación: PHP 8.3+ (Laravel) detrás de su servidor web, o la imagen de Docker. La app del navegador se sirve desde la misma dirección; no se cargan scripts, fuentes ni CDN de terceros, y la Content-Security-Policy solo permite su propio servidor.
- Base de datos: MySQL/MariaDB, PostgreSQL o SQLite: formularios, respuestas, aprobaciones, cuentas y ajustes. Las contraseñas y claves de API de las integraciones se cifran con la clave propia de la instalación (
APP_KEY). - Archivos: subidas, firmas y PDF generados en la carpeta
storage, fuera de la raíz web, con nombres aleatorios; solo se sirven tras comprobar el acceso. - Programador: una entrada cron (
schedule:runcada minuto) envía recordatorios, aplica la política de conservación y comprueba actualizaciones y licencia. - Direcciones públicas: formularios (
/f/…), portales (/p/…), enlaces de aprobación (/approve/…) y justificantes (/r/…); cada una comprueba su propia regla de acceso o un token firmado. Todo lo demás (/app,/api) requiere una cuenta con sesión iniciada; la API REST (Business y Enterprise) y SCIM (Enterprise) requieren tokens. - Las copias de seguridad son suyas: la base de datos más la carpeta
storage, incluidostorage/.envcon la clave que descifra los secretos guardados.
Qué sale de su servidor
SnagBane no tiene analítica ni telemetría. Por sí mismo solo establece estas conexiones:
| Conexión | Qué se envía | A | Cuándo |
|---|---|---|---|
| Comprobación de actualizaciones | Edición, versión, versión de PHP y dirección del sitio. Con licencia, además: la clave de licencia, el ID de instalación de Freemius y un ID de instalación aleatorio | Servicio de actualizaciones de SnagBane (Cloudflare) | A diario y cuando un administrador lo comprueba; se desactiva con SNAGBANE_UPDATES=false |
| Descarga de actualización | Solo la petición del paquete firmado | Servicio de actualizaciones de SnagBane | Cuando un administrador instala una actualización |
| Activación de licencia (Business, Enterprise) | La clave de licencia, un ID de instalación aleatorio, la dirección y el nombre del sitio, la versión y el nombre y correo del administrador que la activa | Freemius (nuestro revendedor) | Una vez, al añadir la licencia |
| Comprobación de licencia (Business, Enterprise) | La clave de licencia, el ID de instalación de Freemius, el ID de instalación aleatorio y la versión | Freemius y el servicio de licencias de SnagBane | A diario; cada hora mientras falle una comprobación |
Y estas solo si las configura:
| Lo que usted activa | Qué se envía | A |
|---|---|---|
| Correo | Notificaciones, solicitudes de aprobación y justificantes | El servicio de correo que configure (SMTP o API) |
| Inicio de sesión y directorio | Peticiones de inicio de sesión; lecturas del directorio para selectores de personas, responsables y grupos | Microsoft Entra ID, Google Workspace, Okta o su proveedor de identidad SAML |
| Integraciones y webhooks | Las respuestas y archivos que cada una tenga configurado enviar | Los servicios que conecte, en los eventos que elija |
| Pagos en formularios | Importe, moneda, concepto del pago y el correo del encuestado si se conoce; nunca los datos de la tarjeta | Stripe o PayPal |
| Registro de auditoría a su SIEM | Entradas del registro de auditoría | Su Sentinel, Splunk, Elastic o endpoint HTTPS |
| Traducción automática | Los textos del formulario que decida traducir | DeepL, Azure, Google o LibreTranslate |
| Notificaciones de la aplicación móvil | Un mensaje de activación vacío; después el móvil recoge el aviso de su servidor | El servicio push del navegador de la persona |
| Importar un formulario desde un enlace | Una petición a esa página de formulario pública | Google Forms o Microsoft Forms, cuando un editor importa uno |
| Opciones desde una lista | Una petición a la lista | La dirección CSV, la lista de SharePoint, la tabla de Excel o la hoja de Google que vincule |
Documentos para evaluadores
- Política de divulgación de vulnerabilidades: cómo informar de un problema de seguridad, y security.txt.
- Anexo de tratamiento de datos: para los datos personales que pueda compartir con nosotros en solicitudes de soporte (en inglés).
- RGPD y protección de datos, la política de privacidad y el contrato de licencia (estos dos últimos en inglés).
- El código del servidor se entrega legible con el software, para que su equipo pueda revisarlo y someterlo a pruebas de seguridad en su propia instalación (EULA, sección 2.3).
No afirmamos tener certificaciones como ISO 27001 o SOC 2: SnagBane funciona dentro de su infraestructura, bajo sus controles y auditorías.
Preguntas de los evaluadores
¿Podemos usarlo sin acceso a internet?
En el plan Free, sí: no se necesita nada. Business y Enterprise necesitan HTTPS saliente para renovar la prueba de licencia al menos cada 2 días; los formularios, las respuestas y las aprobaciones siguen funcionando aunque las funciones de pago estén en pausa.
¿Quién puede ver las respuestas?
Solo las personas a las que dé acceso al espacio de trabajo del formulario, además de los aprobadores para las solicitudes que tengan asignadas. Los aprobadores abren los archivos a través de su aprobación, nunca mediante un enlace público.
¿Cómo se configuran los permisos de Microsoft 365?
En su propio tenant: el script de PowerShell recomendado crea allí el registro de aplicación, así que usted ve y controla cada permiso. Vea permisos.
¿Cómo llevamos el registro de auditoría a Sentinel o Splunk?
Con el plan Enterprise, SnagBane lo envía directamente a Microsoft Sentinel, Splunk, Elastic o cualquier endpoint HTTPS. También puede apuntar un recolector a los archivos diarios JSON Lines en storage/logs/audit. Vea la guía de SIEM.
¿Cómo informamos de un problema de seguridad?
Escríbanos como se describe en la política de divulgación de vulnerabilidades. Por favor, no abra antes una incidencia pública.
¿Dónde están las copias de seguridad?
Donde haga las copias de su servidor: la base de datos y la carpeta storage. SnagBane no guarda copias en ningún otro sitio.