Seguridad y cumplimiento
Seguridad que se verifica, no que se declara
Esta página se audita a sí misma. Abajo verá los controles que su propio navegador confirma en este momento y las cabeceras exactas con las que el servidor entregó el documento que está leyendo.
Auto-auditoría
Controles activos en su navegador
ejecutando pruebas…
Las pruebas se ejecutan localmente: intentamos inyectar un script en línea y escribir HTML sin política de confianza, y reportamos si el navegador lo impidió. Nada se envía a ningún servidor.
Defensa en profundidad
Siete capas, no un candado
Transporte
TLS 1.2+ obligatorio, HSTS con preload y redirección permanente desde HTTP.
Política de contenido
CSP estricta: sin unsafe-inline, sin orígenes externos, nonce por petición.
Anti-XSS estructural
Trusted Types: todo HTML inyectado pasa por una única política auditada.
Aislamiento
COOP, CORP y frame-ancestors 'none' contra clickjacking y fugas entre orígenes.
Abuso y automatización
Límite de tasa por IP, tamaño máximo de cuerpo, tiempos de espera y trampa anti-bot.
Validación e integridad
Todo lo que llega del cliente se vuelve a validar en el servidor. Token CSRF de doble envío.
Trazabilidad
Registro estructurado de cada solicitud con IP anonimizada y sin datos personales en claro.
Inspector
Las cabeceras con las que llegó esta página
Leídas con una petición HEAD a esta misma URL. Si aparece «ausente», es un hallazgo real de configuración, no una omisión del texto.
| Cabecera | Para qué sirve | Estado |
|---|---|---|
| Consultando… | ||
Consultando el servidor…
Arquitectura
Un gateway en Rust (o en Java) delante del sitio
El HTML, el CSS y el JavaScript de un sitio corren en el navegador del visitante: ahí no hay dónde esconder un secreto ni cómo hacer cumplir una regla. Por eso todo lo que debe ser seguro vive en el servidor, y ese servidor lo escribimos en lenguajes con garantías fuertes.
- Rust: sin punteros colgantes ni desbordamientos de búfer por diseño — la clase de fallas que produce los CVE más graves en servidores web simplemente no compila.
- Java (Spring Boot): misma funcionalidad para las organizaciones que ya operan sobre JVM y necesitan integrarse a su plataforma corporativa.
- Idénticos por contrato: ambos aplican las mismas cabeceras, el mismo límite de tasa y las mismas reglas de validación. Elegir uno u otro no cambia la postura de seguridad.
- Contenedor mínimo: imagen sin shell, usuario sin privilegios, sistema de archivos de solo lectura y límites de CPU y memoria explícitos.
Lo que hace el gateway en cada petición
- Genera un nonce aleatorio y lo inserta en la CSP y en el documento.
- Normaliza la ruta y rechaza cualquier intento de salir del directorio publicado.
- Aplica el límite de tasa por IP y corta las solicitudes que exceden el tamaño o el tiempo permitido.
- Fija las diez cabeceras de seguridad y elimina las que revelan el software del servidor.
- En
/api/contacto: verifica el token CSRF, valida cada campo, descarta la trampa anti-bot y exige el consentimiento. - Registra el resultado con la IP truncada, sin escribir datos personales en la bitácora.
Código en gateway-rust/ y gateway-java/. Se levanta con up.ps1; no requiere
instalar Rust ni Java: ambos se compilan dentro de Docker.
Cumplimiento
Contra qué marco se audita este sitio
Referencias técnicas y verificables. Esto es ingeniería de seguridad, no una certificación ni asesoría legal.
ISO/IEC 27002:2022 — controles aplicados
5.34 privacidad y protección de datos personales · 8.9 gestión de la configuración · 8.16 monitoreo de actividades · 8.20 seguridad de redes · 8.23 filtrado web · 8.24 uso de criptografía (TLS 1.2+, secretos fuera del código) · 8.26 requisitos de seguridad de aplicaciones (validación de entrada en servidor) · 8.28 codificación segura (cero dependencias de terceros, lenguaje con seguridad de memoria).
OWASP Top 10 (2021)
A01 Control de acceso: ruta normalizada, sin listado de directorios. A02 Fallas criptográficas: TLS obligatorio y HSTS. A03 Inyección: sin SQL en el borde; todo dato del cliente se trata como texto. A04 Diseño inseguro: límite de tasa y tamaño desde el primer día. A05 Configuración incorrecta: diez cabeceras fijadas por el servidor, no por el HTML. A06 Componentes vulnerables: cero librerías de frontend. A07 Identificación: el sitio público no maneja sesiones de usuario. A09 Registro: bitácora estructurada de cada solicitud.
Ley 21.719 (Chile) y privacidad
Consentimiento explícito y sin casilla premarcada antes de enviar el formulario; finalidad declarada en la misma pantalla; minimización de datos (solo lo necesario para responder); sin cookies de seguimiento, sin analítica de terceros y sin píxeles; IP anonimizada en los registros. La política de retención y el registro del consentimiento se definen al conectar el destino final de los formularios.
WCAG 2.1 nivel AA
1.4.3 contraste · 1.4.10 reflujo · 1.4.11 contraste no textual · 2.1.1 teclado · 2.4.1 evitar bloques ·
2.4.7 foco visible · 2.5.5 tamaño del objetivo · 2.3.3 animación por interacción · 3.3.1 y 3.3.3
identificación y sugerencia ante errores. Todo el movimiento se apaga con prefers-reduced-motion.
Transparencia
Riesgo residual declarado
Lo que todavía depende del despliegue o de una decisión del cliente. Preferimos escribirlo antes de que lo encuentre una auditoría.
- TLS y HSTS son responsabilidad del hosting o del balanceador: el gateway los exige, pero no emite el certificado.
- Destino del formulario: hoy el gateway valida y registra la solicitud; conectar el CRM o el buzón definitivo requiere definir retención y responsable del dato.
- Métricas publicadas corresponden a rangos observados en proyectos de la cartera; se sustituyen por cifras auditadas cuando el cliente autoriza publicarlas.
- Aviso de privacidad y términos deben publicarse y enlazarse desde el pie antes de salir a producción.
¿Su base de datos resistiría una auditoría el lunes?
Revisamos privilegios, cifrado, respaldos y trazabilidad, y le entregamos los hallazgos priorizados por severidad.