Seguridad · Estado de controles
Seguridad
Medidas técnicas implementadas en Asoma para proteger tus datos y las credenciales de terceros. Sin certificaciones que no tenemos.
Borrador: requiere revisión legal antes del lanzamiento.
- Versión
- 0.1 (borrador)
- Actualizado
- Controles
- 12
- Implementados
- 11 de 12
Lo esencial
Cuatro puntos que resumen el documento.
Cada punto enlaza a la cláusula que lo desarrolla. Si solo tienes un minuto, este es el minuto.
Cláusula 01
No afirmamos certificaciones que no tenemos
No contamos con SOC 2 ni ISO 27001. Si tu organización necesita una evaluación, compartimos la documentación técnica disponible.
Cláusula 04
El navegador nunca habla con la IA
Las claves de OpenAI, Anthropic, Google y Meta existen solo en el servidor. El navegador nunca las recibe ni llama a esos proveedores.
Cláusula 03
Cada organización ve solo lo suyo
Las consultas se filtran por tu organización desde el usuario autenticado. Un acceso cruzado responde 404.
Cláusula 06
Las mediciones no se sobrescriben
El histórico es de solo anexado, así que cualquier cifra se puede auditar contra las filas que existían antes.
Verificación en vivo
Esta página se comprueba en tu navegador.
El navegador lee las cabeceras de esta misma respuesta y el estado de sus cookies. Ninguna comprobación viaja a un servidor nuestro: lo que ves abajo lo puedes reproducir con la consola abierta.
Ejecutando comprobaciones
Respuesta de esta visita
midiendo
Tu navegador no ejecuta JavaScript, así que la verificación en vivo no puede correr. Los controles documentados están más abajo.
Conexión cifrada
location.protocol
ComprobandoNo revela el framework
respuesta.headers["x-powered-by"]
ComprobandoTipo de contenido
respuesta.headers["x-content-type-options"]
ComprobandoEnmarcado
respuesta.headers["x-frame-options"]
ComprobandoOrigen de referencia
respuesta.headers["referrer-policy"]
ComprobandoPermisos del dispositivo
respuesta.headers["permissions-policy"]
ComprobandoPolítica de contenido (CSP)
respuesta.headers["content-security-policy"]
ComprobandoCookies legibles por JavaScript
document.cookie
Comprobando
Los controles que no se pueden comprobar desde el navegador están documentados con su estado real en la tabla de abajo.
Controles documentados
El estado real de cada control.
«Planificado» significa que está en la lista de verificación previa al lanzamiento y no se ha completado. No hay estados intermedios ni certificaciones que no tengamos.
11 de 12 implementados · 1 en la lista previa
| Área | Medida | Estado |
|---|---|---|
| Contraseñas | Hash argon2id; nunca en texto claro ni en registros | Implementado |
| Sesiones | JWT de acceso de corta duración + sesiones de refresco con rotación y revocación | Implementado |
| Cookies | httpOnly, SameSite=Lax, de primera parte | Implementado |
| CSRF | SameSite más cabecera personalizada obligatoria en mutaciones desde el navegador | Implementado |
| Aislamiento de datos | Filtro por organización en la capa de consultas; acceso cruzado responde 404 | Implementado |
| Limitación de frecuencia | Redis en autenticación y endpoints públicos | Implementado |
| Claves de proveedores de IA | Solo en el entorno de servidor; el navegador nunca llama a los proveedores | Implementado |
| Validación de entrada | Esquemas tipados en toda la API | Implementado |
| Auditoría | Registro de actividad con actor, entidad, fecha e IP | Implementado |
| Registros | Logs estructurados con redacción de secretos y cabeceras de autorización | Implementado |
| Histórico | Mediciones de solo anexado; re-evaluaciones no sobrescriben | Implementado |
| Lista de verificación previa al lanzamiento | Revisión de dependencias, cabeceras HTTP, copias de seguridad y respuesta a incidentes | Planificado |
Cláusulas del documento
Principios
En claroTres reglas de diseño: el navegador nunca llama a la IA, cada dato es de una organización y nada se sobrescribe. Sin certificaciones que no tenemos.
El sistema se diseñó con tres reglas: el navegador nunca habla con las plataformas de IA, cada dato pertenece a una organización y solo esa organización puede leerlo, y nada relacionado con una medición se sobrescribe. Lo que sigue describe cómo se aplican esas reglas en la implementación actual.
No contamos con certificaciones externas (por ejemplo SOC 2 o ISO 27001) y no afirmamos tenerlas. Si tu organización necesita una evaluación de seguridad, escríbenos y compartiremos la documentación técnica disponible.
Autenticación y sesiones
En claroContraseñas con hash argon2id, tokens de acceso de corta duración y cookies httpOnly que el código del navegador no puede leer.
La autenticación es de primera parte y vive en la API, que es la única autoridad sobre quién eres y a qué organización perteneces.
- Las contraseñas se almacenan únicamente como hash argon2id. Nunca se guardan ni se registran en texto claro.
- Cada inicio de sesión emite un token de acceso JWT de corta duración y una sesión de refresco respaldada en base de datos, con rotación en cada uso y revocación individual.
- Ambos viajan en cookies httpOnly con SameSite=Lax, inaccesibles para el código JavaScript del navegador.
- Toda mutación desde el navegador debe incluir además una cabecera CSRF personalizada; la combinación SameSite más cabecera mitiga la falsificación de solicitudes entre sitios.
- La capa de Next.js verifica la firma del token para proteger las rutas de la aplicación de forma barata; la API vuelve a verificar cada solicitud.
Aislamiento entre organizaciones
En claroCada consulta se filtra por tu organización desde el usuario autenticado. Cruzar de organización responde 404, para no revelar ni la existencia del recurso.
Cada recurso de cliente lleva el identificador de su organización y, cuando aplica, de su proyecto. Las rutas de la API están ancladas a la organización o al proyecto, y la pertenencia se carga desde el usuario autenticado, nunca desde una cabecera o parámetro controlado por el cliente. Los sub-recursos se consultan siempre mediante una unión con el proyecto filtrada por organización, en la capa de consultas. Las pruebas automatizadas verifican que un acceso cruzado entre organizaciones responde 404, para no revelar siquiera la existencia del recurso.
Las funciones de administración interna usan rutas separadas, reservadas a superadministradores, y no comparten controladores con las rutas de clientes.
Credenciales de plataformas de IA
En claroLas claves de los proveedores de IA viven solo en el servidor. El navegador nunca las recibe.
Las claves de OpenAI, Anthropic, Google y Meta existen únicamente en el entorno de la API y de los trabajadores en segundo plano. El navegador nunca las recibe ni llama directamente a esos proveedores: las solicitudes salen desde nuestros servidores, con tiempos de espera acotados y reintentos limitados. Las cabeceras de autorización se eliminan de cualquier registro.
Límites de uso y abuso
En claroAutenticación y endpoints públicos tienen límite de frecuencia en Redis. El análisis gratuito guarda un hash de la IP, no la IP.
Los endpoints de autenticación y los endpoints públicos (análisis gratuito, contacto, eventos de analítica) están protegidos con limitación de frecuencia respaldada en Redis. El análisis gratuito además guarda un hash de la dirección IP para limitar repeticiones sin conservar la IP en claro. Cada ejecución contra una plataforma de IA registra tokens y costo, y los límites del plan se aplican antes de ejecutar.
Validación y datos
En claroToda entrada se valida con esquemas tipados. Las mediciones son de solo anexado y borrar un proyecto es un archivado lógico.
Toda entrada a la API se valida con esquemas tipados antes de llegar a la lógica de negocio. La base de datos es PostgreSQL con identificadores UUID; las mediciones (ejecuciones, respuestas, evaluaciones, citas) son de solo anexado y no se modifican de forma destructiva, lo que permite auditar cualquier cifra histórica. La eliminación de proyectos es un archivado lógico; la eliminación definitiva es una operación administrativa explícita.
Registro y auditoría
En claroLas acciones relevantes quedan en un registro con actor, entidad, fecha e IP. Los secretos se redactan antes de escribirse.
Las acciones relevantes (creación y cambios de proyectos, marcas, preguntas, oportunidades y acciones, cambios de miembros) se guardan en un registro de actividad con actor, entidad, fecha e IP. Los registros de aplicación son estructurados (JSON) e incluyen identificadores de solicitud, organización y proyecto para poder seguir una operación de extremo a extremo. Los secretos, tokens y cabeceras de autorización se redactan antes de escribirse. Los fallos de ejecución y evaluación se persisten con su código de error y se muestran en el panel interno para su revisión.
Operación
En claroUn monolito modular: menos componentes, menos superficie. Los secretos no están en el repositorio.
La plataforma es un monolito modular: una API, un trabajador de tareas en segundo plano, PostgreSQL y Redis. Menos componentes significa menos superficie de exposición. Cada variable de entorno está documentada y los secretos no se incluyen en el repositorio. Antes del lanzamiento comercial completaremos la lista de verificación de seguridad previa al lanzamiento documentada en nuestro roadmap interno.
Divulgación responsable
En claroSi encuentras una vulnerabilidad, escríbenos a hola@asoma.app. Confirmamos la recepción y no actuamos legalmente contra investigación de buena fe.
Si encuentras una vulnerabilidad, escríbenos a hola@asoma.app con una descripción del problema y los pasos para reproducirlo. Confirmaremos la recepción, te mantendremos informado del avance y no emprenderemos acciones legales contra investigaciones realizadas de buena fe que no accedan a datos de terceros ni degraden el servicio. Te pedimos no divulgar el hallazgo públicamente hasta que esté corregido.
¿Te queda una duda sobre este documento?
Escríbenos y respondemos. Es el mismo correo para privacidad, términos y seguridad.
Sigue leyendo
Versión 0.1 (borrador) · Actualizado el 2 de septiembre de 2026