Lo que realmente hace el código
Veinte mecanismos verificados en el código el 16-09-2026. Una frase para cada uno.
Verificado con el código el 16/09/2026
Cada consulta a la base de datos pasa por una extensión de Prisma que la vincula a la organización de la solicitud, y cualquier consulta sin contexto de organización falla en lugar de devolver filas.
Las semillas TOTP y los tokens de proveedores externos se almacenan cifrados con AES-256-GCM, con un llavero que permite la rotación de claves sin perder el acceso a los datos existentes.
Cada respuesta HTML recibe una Content-Security-Policy con un nonce aleatorio por solicitud, y los scripts insertados (inline) sin ese nonce no se ejecutan.
Cada llamada que cambie el estado y que lleve una sesión de personal debe enviar un token CSRF que coincida con la cookie, y esta validación no se puede desactivar en producción.
El enlace del recibo de aprobación está firmado con HMAC-SHA256, la firma se verifica antes de cualquier lectura en la base de datos y cualquier fallo devuelve el mismo error 404.
Un enlace para compartir es un token aleatorio de 32 bytes del cual solo se almacena el SHA-256, con caducidad, contraseña opcional y revocación inmediata; un enlace revocado, caducado o desconocido responde con el mismo error 404.
Cada archivo subido se analiza con ClamAV en una VM privada dentro de la VPC antes de generar cualquier previsualización, y los archivos que no obtengan un resultado limpio se retienen y no se distribuyen.
Los archivos de más de 2 GiB se retienen y no se analizan. Un archivo retenido no se distribuye.
El cliente accede al portal sin cuenta, mediante un código, enlace, teléfono o correo electrónico; solo se almacena un HMAC del código o token, el acceso caduca (a los 30 días por defecto) y la revocación desconecta todos los dispositivos en menos de dos minutos.
El registro de actividad es de solo adición en la aplicación: ninguna ruta de código actualiza o elimina una fila de auditoría, y el flujo de CI falla ante cualquier intento de añadir una ruta de ese tipo.
Cada ruta de la API tiene un límite de frecuencia por usuario o IP de cliente mediante un contador de Redis compartido entre instancias; si Redis no está disponible, el límite se reduce a un tercio por instancia en lugar de liberarse.
La sesión es una cookie JWT firmada (HS256) con HttpOnly, Secure y SameSite=Lax, caduca tras dos horas de inactividad y se puede revocar en todos los dispositivos a la vez; las contraseñas se almacenan como hashes scrypt y los códigos de recuperación de MFA se guardan únicamente como HMAC.
El portal de clientes, los enlaces para compartir, los recibos, la aceptación de invitaciones y las páginas de finalización de registro y restablecimiento de contraseña llevan la etiqueta noindex, y el archivo robots.txt prohíbe el acceso a /api/, /admin, /app y /coupons.
El propietario de un espacio de trabajo puede exportar los datos y eliminar el espacio de trabajo o su propia cuenta sin consultarnos; la eliminación bloquea el acceso de inmediato y el borrado permanente se ejecuta automáticamente tras 30 días, el plazo estipulado en las condiciones, la política de privacidad y el DPA.
Los secretos se cargan desde Secret Manager en el momento del despliegue, se validan al arrancar (longitud mínima, rechazo de valores provisionales y la clave de cifrado debe ser de 32 bytes aleatorios) y se ocultan en los registros e informes de errores.
Las llamadas programadas se autentican con una firma HMAC-SHA256 dentro de un intervalo de cinco minutos o con un token OIDC de Google, y se rechaza cualquier secreto estático de tipo Bearer en producción.
Cada petición saliente a una dirección proporcionada por el usuario (importaciones de Drive, webhooks) se comprueba con rangos de direcciones privadas, incluso después de redireccionamientos y en el momento de la conexión.
El cuerpo de una petición de API está limitado a 1 MiB y se comprueba con un esquema estricto que rechaza los campos desconocidos antes de que el código lo toque.
El tipo de archivo se determina a partir de los propios bytes en lugar de la declaración del navegador, y cualquier archivo que supere la cuota del plan o el límite por archivo se rechaza antes de la subida.
Cada ruta de objeto se comprueba con el prefijo de la organización antes de firmar, leer o eliminar, y los archivos se sirven mediante URL firmadas con límite de tiempo (6 horas para ver, 5 minutos para descargar).
Las propuestas de IA se guardan como propuestas y solo se aplican después de que una persona las apruebe, y el código de IA no puede abrir un ámbito del sistema sobre los datos del cliente; un control de CI lo impone.
Cada despliegue supera primero la suite de pruebas completa con cobertura, los controles de código y npm audit en nivel alto; un despliegue en producción también pasa por un canary con pruebas de preparación.
Dónde se ejecutan los servidores
Los servidores, la base de datos y los archivos de Tasked se encuentran en la región europe-west1 de Google Cloud (Bélgica).
Subprocesadores (correo electrónico, SMS, pagos, informes de errores, proveedores de IA) y Google Analytics, que mide el uso del sitio y de la aplicación, procesan los datos fuera de esa región.
De qué eres responsable
- Los enlaces del portal, los enlaces para compartir y los enlaces de recibos son credenciales al portador: quien los tenga accede.
- El MFA es opcional por cuenta, no es obligatorio en todas las cuentas.
- Un archivo retenido requiere la acción de un miembro del espacio de trabajo.
- Los datos eliminados se pueden restaurar durante 30 días y después desaparecen.
Empieza sin tarjeta
Catorce días con todo activado. Abre un espacio de trabajo, dile a la IA cómo trabajas e invita a un cliente a aprobar.