¿Qué hace convex-security-check?
Lista de verificación rápida de seguridad que cubre autenticación, exposición de funciones, validación de argumentos, control de acceso a nivel de fila y manejo de variables de entorno.
Áreas de Verificación
1. Autenticación
- Verificar que todos los endpoints sensibles requieran autenticación.
- Usar
ctx.authpara validar la identidad del usuario antes de procesar solicitudes. - Implementar proveedores de autenticación como Auth0, Clerk o la autenticación personalizada de Convex.
2. Exposición de Funciones
- Revisar qué funciones están marcadas como
publicy asegurarse de que sea intencional. - Las funciones privadas (
internal) no deben ser accesibles desde el cliente. - Evitar exponer funciones que realicen operaciones administrativas o de borrado masivo.
3. Validación de Argumentos
- Validar todos los argumentos de entrada usando esquemas (
v.object(),v.string(), etc.). - Rechazar entradas inesperadas o maliciosas.
- No confiar únicamente en la validación del cliente; siempre validar en el servidor.
4. Control de Acceso a Nivel de Fila
- Implementar comprobaciones de permisos por fila en consultas y mutaciones.
- Usar
ctx.db.query(...).filter(...)para restringir resultados según el usuario autenticado. - Asegurarse de que los usuarios solo puedan leer/modificar sus propios datos.
5. Manejo de Variables de Entorno
- No exponer variables de entorno sensibles (claves API, secretos) en el código del cliente.
- Usar el panel de configuración de Convex para gestionar secretos de forma segura.
- Revisar que las variables de entorno no estén hardcodeadas en el repositorio.
Cómo Usar
Ejecute esta lista de verificación como parte de su proceso de revisión de código antes de desplegar a producción. Puede integrarse en scripts de CI/CD o realizarse manualmente por un miembro del equipo.