Construyo software pensando como un atacante (y por qué deberías exigirlo)
Antes de escribir software profesionalmente, ya rompía el de otros. Vengo del pentesting —me saqué el HTB CPTS y el CDSA, el Ethical Hacker de Cisco— y eso me cambió la forma de programar para siempre. Cuando construyo, no me pregunto solo "¿funciona?". Me pregunto "¿cómo rompería yo esto?".
La diferencia entre "funciona" y "aguanta"
La mayoría del software se construye para el camino feliz: el usuario hace lo que se espera y todo va bien. Pero los atacantes no van por el camino feliz. Mandan datos que no tocan, manipulan IDs, prueban a entrar donde no deben. Si solo pruebas que algo funciona, te queda la mitad del trabajo.
Pensar como atacante es asumir, desde el primer commit, que alguien va a intentar abusar de cada formulario, cada endpoint y cada permiso. Y construir en consecuencia.
Qué cambia cuando programas así
Cada permiso se comprueba en el servidor
No basta con que el botón "borrar" no se vea: hay que verificar en el backend que ese usuario tiene derecho a esa acción y sobre ese recurso. Es la diferencia entre una app segura y un IDOR esperando a ser explotado.
Nunca te fías de lo que llega del cliente
Cualquier dato que venga del navegador o de una app es "hostil" hasta que lo validas. La autoría de un recurso la decide el servidor con el usuario autenticado, no un campo que manda el cliente.
Los secretos y la configuración se tratan como secretos
Nada de claves en el código, nada de DEBUG=true en producción, nada de documentación interna expuesta. La configuración de despliegue es tan importante como el código.
Defensa en profundidad
Cabeceras de seguridad, expiración de tokens, hashing fuerte de contraseñas, HTTPS de extremo a extremo. Ninguna es la solución por sí sola; juntas hacen que romperlo cueste mucho más.
Y con la IA, más todavía
Hoy mucho código nace de un asistente de IA. Es rápido y útil, pero genera el camino feliz y se deja la seguridad por el camino. Por eso reviso el código generado con IA con la misma mirada con la que haría un pentest: buscando el agujero antes de que lo encuentre otro.
Qué exigirle a quien desarrolla tu producto
No hace falta que seas técnico. Con preguntar esto ya filtras mucho:
- ¿Comprobáis permisos en el servidor, no solo en la interfaz?
- ¿Cómo guardáis las contraseñas y los tokens de sesión?
- ¿Aplicáis cabeceras de seguridad en API y frontend?
- ¿Cómo es la configuración de producción frente a la de desarrollo?
- ¿Hacéis alguna revisión de seguridad antes de lanzar?
¿Tu producto está construido para aguantar?
Te hago una auditoría de seguridad inicial gratis y te digo, sin humo, qué blindar.
Pedir auditoría gratis →Ver un caso real: auditoría OWASP y hardening de una plataforma web + app →