> For the complete documentation index, see [llms.txt](https://senselab.gitbook.io/senselab-docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://senselab.gitbook.io/senselab-docs/docs/vdr/05_security_compliance_summary.md).

# Resumen de Seguridad y Compliance — Senselab Core API v5.0.1

**Documento para Virtual Data Room — Inversores y Due Diligence**\
**Fecha:** 15 de Abril 2026

***

## 1. Postura de Seguridad General

| Aspecto                        |       Estado      | Detalle                            |
| ------------------------------ | :---------------: | ---------------------------------- |
| **OWASP Top 10 (2021)**        |      ✅ 10/10      | Todas las categorías implementadas |
| **PHPStan Level 8**            |    ✅ 0 errores    | Análisis estático más estricto     |
| **Tests automatizados**        |      ✅ 1,261+     | Unit, Feature, Contract, Load      |
| **Mutation Testing**           |   ✅ Configurado   | Infection framework                |
| **Dependency Audit**           |      ✅ 0 CVEs     | `composer audit` limpio            |
| **Cifrado de datos sensibles** |   ✅ AES-256-CBC   | 30+ campos encriptados             |
| **Autenticación**              | ✅ Laravel Sanctum | Tokens API stateless               |
| **Autorización**               |  ✅ RBAC granular  | 80 policies, 68 permisos, 8 roles  |
| **Rate Limiting**              |    ✅ 7 limiters   | Protección contra abuso            |
| **Auditoría de acciones**      |   ✅ 23 columnas   | Log completo de operaciones        |

***

## 2. OWASP Top 10 — Implementación Detallada

### A01:2021 — Broken Access Control ✅

* **80 Policies** Laravel con autorización a nivel de recurso
* **8 roles** con permisos granulares (68 permisos distintos)
* Middleware de autorización en cada ruta protegida
* Tests de autorización en cada controller

### A02:2021 — Cryptographic Failures ✅

* **AES-256-CBC** para campos sensibles (30+ campos)
* Certificados XAdES-EPES para firma digital de facturas
* Passwords hasheados con bcrypt (cost factor 12)
* Variables sensibles en `.env` (fuera del repositorio)

### A03:2021 — Injection ✅

* **175 FormRequests** con validación estricta en cada endpoint
* Eloquent ORM previene SQL injection por defecto
* Input sanitization en todos los campos de texto libre
* No se construyen queries SQL manualmente

### A04:2021 — Insecure Design ✅

* Arquitectura diseñada con seguridad desde el inicio
* Principio de mínimo privilegio en RBAC
* Multi-tenancy con aislamiento físico de BD (no lógico)
* DTOs para transferencia de datos (63 DTOs)

### A05:2021 — Security Misconfiguration ✅

* `APP_DEBUG=false` en producción
* Headers de seguridad (X-Frame-Options, X-Content-Type-Options, etc.)
* CORS configurado restrictivamente
* Docker images basadas en Alpine (superficie mínima)

### A06:2021 — Vulnerable Components ✅

* `composer audit` ejecutado en CI/CD
* Dependencias actualizadas (Laravel 12, PHP 8.4)
* Auditoría de licencias completada (ver `02_DEPENDENCY_LICENSE_AUDIT.md`)
* 0 vulnerabilidades conocidas

### A07:2021 — Authentication Failures ✅

* Laravel Sanctum con tokens de expiración configurable
* Rate limiting en endpoints de login (máximo 5 intentos/minuto)
* No se expone información en mensajes de error de auth
* Tokens revocables por usuario y por sesión

### A08:2021 — Data Integrity Failures ✅

* Webhooks firmados con **HMAC-SHA256**
* Validación SSRF en URLs de webhook (v5.0.1)
* Migraciones versionadas (103 migraciones)
* Seeders determinísticos para datos maestros

### A09:2021 — Logging & Monitoring ✅

* **Sentry** para error tracking en tiempo real
* **OpenTelemetry** para distributed tracing
* **Laravel Horizon** para monitoreo de colas
* Auditoría de acciones con 23 columnas de metadatos
* Logs estructurados vía Monolog

### A10:2021 — Server-Side Request Forgery (SSRF) ✅

* Validación de URLs de webhook contra IPs privadas y locales
* Filtrado de protocolos (solo HTTPS permitido en webhooks)
* Implementado en v5.0.1 como corrección proactiva

***

## 3. Compliance Regulatorio Costa Rica

### 3.1 Facturación Electrónica DGT v4.4

| Criterio                           |            Estado            |
| ---------------------------------- | :--------------------------: |
| Brechas identificadas vs normativa |             38/38            |
| Brechas resueltas                  |       **38/38 (100%)**       |
| Firma digital XAdES-EPES           |               ✅              |
| Tipos de documento soportados      | FE, NC, ND, TE, FEC, FEE, CE |
| Envío a Hacienda (API REST)        |               ✅              |
| Recepción de respuestas            |               ✅              |
| Generación de XML conforme         |               ✅              |
| Consecutivo automático             |               ✅              |
| Clave numérica 50 dígitos          |               ✅              |
| Ambiente sandbox y producción      |               ✅              |

### 3.2 Compliance Laboral (CAJA/CCSS)

| Criterio                     | Estado |
| ---------------------------- | :----: |
| Módulo de nómina             |    ✅   |
| Cálculos CAJA costarricense  |    ✅   |
| Deducción de cargas sociales |    ✅   |
| Reportes para CCSS           |    ✅   |

***

## 4. Protección de Datos y Privacidad

### 4.1 Multi-tenancy — Aislamiento de Datos

| Aspecto                   | Implementación                           |
| ------------------------- | ---------------------------------------- |
| **Modelo de aislamiento** | Base de datos separada por tenant        |
| **Framework**             | Spatie Laravel Multitenancy v4.0         |
| **Tipo de aislamiento**   | Físico (BD independiente por empresa)    |
| **Cross-tenant access**   | Imposible por diseño (BD separadas)      |
| **Tenant switching**      | Middleware automático por dominio/header |

### 4.2 Datos Personales

| Medida                     | Implementación                                     |
| -------------------------- | -------------------------------------------------- |
| Cifrado de datos sensibles | AES-256-CBC (cédulas, cuentas bancarias, salarios) |
| Acceso basado en roles     | RBAC con 80 policies                               |
| Auditoría de acceso        | Log de quién accede a qué dato                     |
| Derecho al olvido          | Implementable vía soft-delete + purge              |
| Portabilidad de datos      | Export PDF/Excel/CSV en todos los módulos          |

### 4.3 Hacia GDPR/LGPD Compliance

| Requisito GDPR                |               Estado en Senselab Core               |
| ----------------------------- | :-------------------------------------------------: |
| Consentimiento explícito      |           ⬜ Requiere capa de presentación           |
| Derecho de acceso             |            ✅ API de consulta por usuario            |
| Derecho de rectificación      |             ✅ Endpoints de actualización            |
| Derecho al olvido             | ⚠️ Soft-delete implementado, purge físico pendiente |
| Portabilidad                  |            ✅ Export en múltiples formatos           |
| Notificación de brechas       |       ✅ Sentry + auditoría habilitan detección      |
| DPO (Data Protection Officer) |            ⬜ Responsabilidad del operador           |

***

## 5. Infraestructura de Seguridad

### 5.1 Rate Limiting

| Limiter                 | Configuración          | Protege            |
| ----------------------- | ---------------------- | ------------------ |
| API general             | 60 req/min por usuario | Abuso general      |
| Login                   | 5 req/min por IP       | Brute force        |
| Registro                | 3 req/min por IP       | Spam de cuentas    |
| Facturación electrónica | 30 req/min             | Abuso de FE        |
| IA endpoints            | 20 req/min             | Costo de API IA    |
| Webhooks                | 100 req/min            | Flood de eventos   |
| Exportaciones           | 10 req/min             | Abuso de resources |

### 5.2 Headers de Seguridad

```
X-Frame-Options: DENY
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Strict-Transport-Security: max-age=31536000; includeSubDomains
Referrer-Policy: strict-origin-when-cross-origin
```

### 5.3 CORS

Configuración restrictiva: solo dominios específicos permitidos, métodos y headers controlados.

***

## 6. Continuidad y Recuperación

| Aspecto                     | Implementación                                  |
| --------------------------- | ----------------------------------------------- |
| **Estrategia de backups**   | Documentada en `docs/guides/BACKUP_STRATEGY.md` |
| **Migraciones versionadas** | 103 migraciones, rollback disponible            |
| **Script de rollback**      | `scripts/rollback.sh`                           |
| **Docker images**           | Reproducibles desde Dockerfile                  |
| **Infrastructure as Code**  | Kubernetes manifests + Kustomize overlays       |

***

## 7. Testing de Seguridad

| Tipo de Test                                | Estado |          Archivos          |
| ------------------------------------------- | :----: | :------------------------: |
| Unit tests de policies                      |    ✅   |          80+ tests         |
| Feature tests de autenticación              |    ✅   |          15+ tests         |
| Feature tests de autorización               |    ✅   |          60+ tests         |
| Contract tests (Pact)                       |    ✅   |         7 archivos         |
| Tests de validación (FormRequests)          |    ✅   |            175+            |
| Mutation testing (Infection)                |    ✅   |         Configurado        |
| Penetration testing formal                  |    ⬜   | Recomendado pre-producción |
| SAST (Static Application Security Testing)  |    ✅   |     PHPStan L8 + Sonar     |
| DAST (Dynamic Application Security Testing) |    ⬜   |         Recomendado        |

***

## 8. Recomendaciones Post-Compra

| Prioridad | Acción                                                       |   Esfuerzo  |
| :-------: | ------------------------------------------------------------ | :---------: |
|  🔴 Alta  | Ejecutar penetration testing formal (OWASP ZAP o Burp Suite) |   2-3 días  |
|  🔴 Alta  | Registrar la IP en el RPPI de Costa Rica                     | 1-2 semanas |
|  🟡 Media | Implementar purge físico de datos (GDPR "right to erasure")  |   2-3 días  |
|  🟡 Media | Configurar WAF (Web Application Firewall) en producción      |    1 día    |
|  🟢 Baja  | Ejecutar DAST scan con OWASP ZAP                             |    1 día    |
|  🟢 Baja  | Documentar procedimiento formal de respuesta a incidentes    |   2-3 días  |

***

*Documento preparado para due diligence — 15 de Abril 2026*\
\&#xNAN;*Senselab*


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://senselab.gitbook.io/senselab-docs/docs/vdr/05_security_compliance_summary.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
