Qué datos de tus clientes debes proteger
No todos los datos requieren el mismo nivel de protección. Este artículo ayuda a distinguir qué información es crítica, por qué y cómo empezar a protegerla.
Leer artículo →Explicación en términos no técnicos de por qué conectar una interfaz de usuario directamente a una base de datos es una arquitectura peligrosa: exposición de datos, falta de validación y riesgos de seguridad.
En el desarrollo de software, como en casi todo, el camino más corto entre dos puntos suele ser el que genera más problemas a largo plazo. Uno de los atajos más frecuentes —y más peligrosos— que aparecen en proyectos con presupuestos ajustados o con equipos sin experiencia en arquitectura es conectar la interfaz de usuario directamente a la base de datos, sin una capa intermedia que controle, valide y proteja el acceso a la información.
Para quien no programa, la idea puede sonar razonable: si la aplicación necesita mostrar datos que están en la base de datos, ¿para qué poner algo en el medio? Pero esa capa intermedia —técnicamente llamada backend o API— no es un lujo ni una complejidad innecesaria: es un requisito de seguridad y de integridad. Prescindir de ella es como tener un negocio con una caja registradora abierta al público y confiar en que nadie va a meter la mano.
Este artículo explica, sin jerga técnica, por qué esta arquitectura es peligrosa y cuáles son los riesgos concretos para un negocio.
Para entender el riesgo, primero hay que entender qué significa "conectar el frontend a la base de datos".
En una arquitectura bien diseñada, cuando un usuario usa una aplicación —ya sea web o móvil—, la aplicación se comunica con un servidor intermedio. Ese servidor recibe la solicitud, verifica que el usuario tenga permiso para hacer lo que está pidiendo, aplica reglas de negocio, consulta la base de datos, y devuelve únicamente la información que corresponde.
En la arquitectura insegura, ese servidor intermedio no existe. La aplicación del usuario —el frontend— se conecta directamente a la base de datos. Para hacerlo, necesita conocer las credenciales de acceso: dirección del servidor, nombre de la base de datos, usuario y contraseña. Esas credenciales viajan en el código de la aplicación, que está en el teléfono o en el navegador de cada usuario.
El problema fundamental es que todo lo que está del lado del usuario —en su dispositivo, en su navegador— puede ser inspeccionado, modificado y manipulado. No importa qué tan segura parezca la aplicación: si las credenciales de la base de datos están en el código que se ejecuta en el dispositivo del usuario, un atacante con conocimientos básicos puede extraerlas.
El primer riesgo es el más directo. Cualquier persona que use la aplicación puede, con herramientas gratuitas y disponibles en internet, inspeccionar el código que se ejecuta en su propio dispositivo y encontrar las credenciales de la base de datos.
Una vez que un atacante tiene esas credenciales, puede conectarse a la base de datos desde cualquier lugar, sin pasar por la aplicación. Desde su propia computadora, sin ningún control, puede:
Esto no es un escenario teórico. Ocurre con frecuencia en aplicaciones que salen al mercado sin una revisión de seguridad adecuada, y el daño suele descubrirse semanas o meses después, cuando ya se filtró información sensible o se manipularon datos críticos.
Cuando se filtran datos de clientes, el problema no termina cuando se corrige el agujero de seguridad. Dependiendo del país y del tipo de datos, puede haber obligación legal de notificar a los afectados, sanciones de organismos reguladores y —lo más difícil de cuantificar pero lo más costoso— pérdida de confianza de los clientes, que pueden decidir llevar su información a otro lado.
La capa intermedia no solo protege el acceso a la base de datos. También valida que los datos que entran al sistema tengan sentido y no sean maliciosos.
Sin esa capa de validación, cualquier usuario de la aplicación —o cualquier atacante que se haya conectado directamente a la base de datos— puede:
La capa intermedia actúa como un filtro: todo lo que entra y todo lo que sale del sistema pasa por un punto de control donde se verifican permisos, se validan formatos y se aplican reglas.
En un sistema con capa intermedia, los permisos son granulares: el usuario de ventas puede ver los datos de clientes pero no las cuentas bancarias de la empresa; el administrador puede ver todo pero el cliente final solo puede ver su propia información.
Cuando el frontend se conecta directamente a la base de datos, ese control granular es muy difícil de implementar. O bien todos los usuarios comparten las mismas credenciales genéricas y ven exactamente lo mismo, o bien se intenta manejar los permisos desde la base de datos —una configuración compleja, propensa a errores y que requiere conocimientos que la mayoría de los proyectos no tienen—.
El resultado típico es que cualquier persona que pueda conectarse a la base de datos puede ver todo lo que hay en ella. Eso significa que un empleado que accede al sistema con fines legítimos puede, si tiene la curiosidad y los conocimientos técnicos, ver información que no debería estar a su alcance: salarios, márgenes, datos personales de otros clientes.
Hay un riesgo menos obvio pero igualmente grave: la rigidez que genera esta arquitectura para el desarrollo futuro.
En un sistema con capa intermedia, la base de datos puede cambiar su estructura interna —renombrar columnas, dividir tablas, migrar datos a un formato nuevo— sin que la aplicación del usuario se entere, porque la capa intermedia traduce entre la nueva estructura y lo que la aplicación espera recibir.
Si la aplicación se conecta directamente a la base de datos, cualquier cambio en la estructura de los datos rompe la aplicación para todos los usuarios hasta que actualicen a una nueva versión. Esto obliga a coordinar las actualizaciones del servidor con las actualizaciones de todos los dispositivos simultáneamente, o a mantener versiones antiguas de la base de datos funcionando en paralelo —una pesadilla operativa que crece con la cantidad de usuarios.
Aunque los riesgos de seguridad son los más visibles, el problema de mantenibilidad es igual de grave para la viabilidad del negocio a largo plazo. Una arquitectura que impide evolucionar el producto sin romper la experiencia de los usuarios existentes es un lastre que se vuelve más pesado con cada nueva funcionalidad.
La capa intermedia, entre sus muchas funciones, suele implementar un registro de actividad: quién hizo qué, cuándo, desde dónde. Ese registro es fundamental para:
Cuando la aplicación se conecta directamente a la base de datos, el registro de actividad se limita a lo que la base de datos guarda por defecto —que suele ser poco y técnico—, y cualquier atacante que haya obtenido las credenciales puede borrar sus propias huellas del registro.
No hace falta saber programar para hacer preguntas que revelen si el equipo está tomando atajos peligrosos:
Si solo pudieras hacer una pregunta, hacé esta: "¿Puede un usuario de nuestra aplicación acceder a datos que no le corresponden, ya sea por error de la aplicación o manipulándola desde su dispositivo?". Si el proveedor no puede explicar con claridad por qué eso es imposible, la arquitectura probablemente no es segura.
La alternativa a esta arquitectura insegura no es compleja de describir en términos de negocio, aunque requiera trabajo técnico implementarla:
El artículo sobre qué preguntar sobre seguridad a tu proveedor de software amplía la lista de preguntas técnicas que conviene hacer antes de contratar, para asegurarse de que el proveedor sigue prácticas de desarrollo seguras.
También es relevante entender qué datos de tus clientes deberías proteger, porque una arquitectura insegura no solo expone datos del negocio: expone la información personal de las personas que confiaron en tu empresa.
La decisión de usar una arquitectura con capa intermedia no es un lujo técnico ni una complejidad que pueda posponerse. Es la diferencia entre un sistema donde la seguridad depende de la buena fe de los usuarios y uno donde la seguridad está garantizada por diseño. Y en un contexto donde las filtraciones de datos pueden costar millones en sanciones y pérdida de clientes, esa diferencia no es menor.
¿Quieres evaluar cómo aplicar esto a tu proyecto?
Cuéntanos tu caso →