
Cómo evitar la enumeración de nombres de usuario | Secure Code Warrior
Un ataque de canal lateral se produce cuando un pirata informático puede recopilar información de la implementación física de un sistema de software en lugar de una debilidad teórica en el algoritmo o un error en el código del software.
Un ejemplo que me gusta usar para dejar esto más claro es una forma de enumerar nombres de usuario. Si quieres saber qué es la enumeración de nombres de usuario o por qué es mala, visita nuestro sitio web para ver explicación en vídeo o juega un desafío para ver si puedes identificarlo en código.
Ahora, para entender cómo se puede realizar la enumeración de nombres de usuario mediante un ataque de canal lateral, es necesario tener un cierto conocimiento de cómo se gestionan (o al menos se deben gestionar) las contraseñas en las aplicaciones web modernas. Una buena aplicación web no conoce tu contraseña, no la guarda ni la almacena en ningún sitio. Entonces, ¿cómo sabe que lo que escribiste es correcto y, de hecho, tu contraseña? Bueno, tu contraseña está cifrada.
Una función de hash es una operación matemática que es fácil de realizar de una manera (aunque es algo costosa desde el punto de vista computacional) pero muy difícil de revertir y, en el caso de buenos algoritmos de hash, la salida es única según la entrada. Cuando te registras en un sitio web, ese hash se almacena de forma segura, no tu contraseña en sí. Esto significa que cada vez que inicias sesión, la aplicación web aplica un hash a los datos introducidos y compara los resultados del hash con el hash almacenado. Si quieres obtener más información sobre almacenamiento seguro de contraseñas, puedes hacerlo en nuestra plataforma.

El hash de la entrada lleva algo de tiempo en una computadora y los desarrolladores siempre intentan optimizar todo lo que escriben para que los usuarios tengan una experiencia fluida. Una cosa que acelera el programa es omitir el hashing cuando no es necesario. Por ejemplo, cuando el nombre de usuario no existe (por lo que no es necesario comprobar ninguna contraseña), pueden responder al usuario de inmediato. De esta forma, pueden evitar el lento cálculo que supone el uso del hash de la contraseña. Si el nombre de usuario era correcto, codificarán la contraseña ingresada y la compararán con el hash almacenado.
En este punto, es posible que haya adivinado dónde pueden ir mal las cosas. Aunque en realidad el hashing solo tarda unos pocos milisegundos, un hacker puede aprovechar este retraso adicional para averiguar si el nombre de usuario que ha introducido es correcto o no, ya que un nombre de usuario incorrecto responderá un poco más rápido porque no se ha realizado ningún hashing. Este tipo de ataque de canal lateral se denomina ataque cronometrado y es un buen ejemplo de cómo diferentes requisitos no funcionales pueden contrarrestarse entre sí. A veces, el código no puede ser rápido y seguro al mismo tiempo.
Por lo tanto, aunque las contraseñas se manejan perfectamente y el mensaje que se muestra es genérico y no informa si la contraseña o el nombre de usuario eran incorrectos, el sistema sigue siendo vulnerable. La solución es sencilla: usar siempre un hash para la contraseña o retrasar el envío de la respuesta el tiempo necesario para hacerlo.
Un atacante puede utilizar la información obtenida para obtener una lista de usuarios del sistema. Esta información se puede usar para atacar la aplicación web, por ejemplo, mediante un ataque de fuerza bruta o con un nombre de usuario o contraseña predeterminados.


La enumeración de nombres de usuario se produce cuando los piratas informáticos utilizan ataques de fuerza bruta para obtener información sobre el nombre de usuario y la contraseña. Aprenda a evitar la enumeración de nombres de usuario con Secure Code Warrior.
Investigador de seguridad de aplicaciones - Ingeniero de I+D - Candidato a doctor

Secure Code Warrior aquí para que su organización le ayude a proteger el código durante todo el ciclo de vida del desarrollo de software y a crear una cultura en la que la ciberseguridad sea una prioridad. Ya sea administrador de AppSec, desarrollador, CISO o cualquier persona relacionada con la seguridad, podemos ayudar a su organización a reducir los riesgos asociados con el código inseguro.
Reserve una demostraciónInvestigador de seguridad de aplicaciones - Ingeniero de I+D - Candidato a doctor


Un ataque de canal lateral se produce cuando un pirata informático puede recopilar información de la implementación física de un sistema de software en lugar de una debilidad teórica en el algoritmo o un error en el código del software.
Un ejemplo que me gusta usar para dejar esto más claro es una forma de enumerar nombres de usuario. Si quieres saber qué es la enumeración de nombres de usuario o por qué es mala, visita nuestro sitio web para ver explicación en vídeo o juega un desafío para ver si puedes identificarlo en código.
Ahora, para entender cómo se puede realizar la enumeración de nombres de usuario mediante un ataque de canal lateral, es necesario tener un cierto conocimiento de cómo se gestionan (o al menos se deben gestionar) las contraseñas en las aplicaciones web modernas. Una buena aplicación web no conoce tu contraseña, no la guarda ni la almacena en ningún sitio. Entonces, ¿cómo sabe que lo que escribiste es correcto y, de hecho, tu contraseña? Bueno, tu contraseña está cifrada.
Una función de hash es una operación matemática que es fácil de realizar de una manera (aunque es algo costosa desde el punto de vista computacional) pero muy difícil de revertir y, en el caso de buenos algoritmos de hash, la salida es única según la entrada. Cuando te registras en un sitio web, ese hash se almacena de forma segura, no tu contraseña en sí. Esto significa que cada vez que inicias sesión, la aplicación web aplica un hash a los datos introducidos y compara los resultados del hash con el hash almacenado. Si quieres obtener más información sobre almacenamiento seguro de contraseñas, puedes hacerlo en nuestra plataforma.

El hash de la entrada lleva algo de tiempo en una computadora y los desarrolladores siempre intentan optimizar todo lo que escriben para que los usuarios tengan una experiencia fluida. Una cosa que acelera el programa es omitir el hashing cuando no es necesario. Por ejemplo, cuando el nombre de usuario no existe (por lo que no es necesario comprobar ninguna contraseña), pueden responder al usuario de inmediato. De esta forma, pueden evitar el lento cálculo que supone el uso del hash de la contraseña. Si el nombre de usuario era correcto, codificarán la contraseña ingresada y la compararán con el hash almacenado.
En este punto, es posible que haya adivinado dónde pueden ir mal las cosas. Aunque en realidad el hashing solo tarda unos pocos milisegundos, un hacker puede aprovechar este retraso adicional para averiguar si el nombre de usuario que ha introducido es correcto o no, ya que un nombre de usuario incorrecto responderá un poco más rápido porque no se ha realizado ningún hashing. Este tipo de ataque de canal lateral se denomina ataque cronometrado y es un buen ejemplo de cómo diferentes requisitos no funcionales pueden contrarrestarse entre sí. A veces, el código no puede ser rápido y seguro al mismo tiempo.
Por lo tanto, aunque las contraseñas se manejan perfectamente y el mensaje que se muestra es genérico y no informa si la contraseña o el nombre de usuario eran incorrectos, el sistema sigue siendo vulnerable. La solución es sencilla: usar siempre un hash para la contraseña o retrasar el envío de la respuesta el tiempo necesario para hacerlo.
Un atacante puede utilizar la información obtenida para obtener una lista de usuarios del sistema. Esta información se puede usar para atacar la aplicación web, por ejemplo, mediante un ataque de fuerza bruta o con un nombre de usuario o contraseña predeterminados.

Un ataque de canal lateral se produce cuando un pirata informático puede recopilar información de la implementación física de un sistema de software en lugar de una debilidad teórica en el algoritmo o un error en el código del software.
Un ejemplo que me gusta usar para dejar esto más claro es una forma de enumerar nombres de usuario. Si quieres saber qué es la enumeración de nombres de usuario o por qué es mala, visita nuestro sitio web para ver explicación en vídeo o juega un desafío para ver si puedes identificarlo en código.
Ahora, para entender cómo se puede realizar la enumeración de nombres de usuario mediante un ataque de canal lateral, es necesario tener un cierto conocimiento de cómo se gestionan (o al menos se deben gestionar) las contraseñas en las aplicaciones web modernas. Una buena aplicación web no conoce tu contraseña, no la guarda ni la almacena en ningún sitio. Entonces, ¿cómo sabe que lo que escribiste es correcto y, de hecho, tu contraseña? Bueno, tu contraseña está cifrada.
Una función de hash es una operación matemática que es fácil de realizar de una manera (aunque es algo costosa desde el punto de vista computacional) pero muy difícil de revertir y, en el caso de buenos algoritmos de hash, la salida es única según la entrada. Cuando te registras en un sitio web, ese hash se almacena de forma segura, no tu contraseña en sí. Esto significa que cada vez que inicias sesión, la aplicación web aplica un hash a los datos introducidos y compara los resultados del hash con el hash almacenado. Si quieres obtener más información sobre almacenamiento seguro de contraseñas, puedes hacerlo en nuestra plataforma.

El hash de la entrada lleva algo de tiempo en una computadora y los desarrolladores siempre intentan optimizar todo lo que escriben para que los usuarios tengan una experiencia fluida. Una cosa que acelera el programa es omitir el hashing cuando no es necesario. Por ejemplo, cuando el nombre de usuario no existe (por lo que no es necesario comprobar ninguna contraseña), pueden responder al usuario de inmediato. De esta forma, pueden evitar el lento cálculo que supone el uso del hash de la contraseña. Si el nombre de usuario era correcto, codificarán la contraseña ingresada y la compararán con el hash almacenado.
En este punto, es posible que haya adivinado dónde pueden ir mal las cosas. Aunque en realidad el hashing solo tarda unos pocos milisegundos, un hacker puede aprovechar este retraso adicional para averiguar si el nombre de usuario que ha introducido es correcto o no, ya que un nombre de usuario incorrecto responderá un poco más rápido porque no se ha realizado ningún hashing. Este tipo de ataque de canal lateral se denomina ataque cronometrado y es un buen ejemplo de cómo diferentes requisitos no funcionales pueden contrarrestarse entre sí. A veces, el código no puede ser rápido y seguro al mismo tiempo.
Por lo tanto, aunque las contraseñas se manejan perfectamente y el mensaje que se muestra es genérico y no informa si la contraseña o el nombre de usuario eran incorrectos, el sistema sigue siendo vulnerable. La solución es sencilla: usar siempre un hash para la contraseña o retrasar el envío de la respuesta el tiempo necesario para hacerlo.
Un atacante puede utilizar la información obtenida para obtener una lista de usuarios del sistema. Esta información se puede usar para atacar la aplicación web, por ejemplo, mediante un ataque de fuerza bruta o con un nombre de usuario o contraseña predeterminados.

Haga clic en el enlace de abajo y descargue el PDF de este recurso.
Secure Code Warrior aquí para que su organización le ayude a proteger el código durante todo el ciclo de vida del desarrollo de software y a crear una cultura en la que la ciberseguridad sea una prioridad. Ya sea administrador de AppSec, desarrollador, CISO o cualquier persona relacionada con la seguridad, podemos ayudar a su organización a reducir los riesgos asociados con el código inseguro.
Ver informeReserve una demostraciónInvestigador de seguridad de aplicaciones - Ingeniero de I+D - Candidato a doctor
Un ataque de canal lateral se produce cuando un pirata informático puede recopilar información de la implementación física de un sistema de software en lugar de una debilidad teórica en el algoritmo o un error en el código del software.
Un ejemplo que me gusta usar para dejar esto más claro es una forma de enumerar nombres de usuario. Si quieres saber qué es la enumeración de nombres de usuario o por qué es mala, visita nuestro sitio web para ver explicación en vídeo o juega un desafío para ver si puedes identificarlo en código.
Ahora, para entender cómo se puede realizar la enumeración de nombres de usuario mediante un ataque de canal lateral, es necesario tener un cierto conocimiento de cómo se gestionan (o al menos se deben gestionar) las contraseñas en las aplicaciones web modernas. Una buena aplicación web no conoce tu contraseña, no la guarda ni la almacena en ningún sitio. Entonces, ¿cómo sabe que lo que escribiste es correcto y, de hecho, tu contraseña? Bueno, tu contraseña está cifrada.
Una función de hash es una operación matemática que es fácil de realizar de una manera (aunque es algo costosa desde el punto de vista computacional) pero muy difícil de revertir y, en el caso de buenos algoritmos de hash, la salida es única según la entrada. Cuando te registras en un sitio web, ese hash se almacena de forma segura, no tu contraseña en sí. Esto significa que cada vez que inicias sesión, la aplicación web aplica un hash a los datos introducidos y compara los resultados del hash con el hash almacenado. Si quieres obtener más información sobre almacenamiento seguro de contraseñas, puedes hacerlo en nuestra plataforma.

El hash de la entrada lleva algo de tiempo en una computadora y los desarrolladores siempre intentan optimizar todo lo que escriben para que los usuarios tengan una experiencia fluida. Una cosa que acelera el programa es omitir el hashing cuando no es necesario. Por ejemplo, cuando el nombre de usuario no existe (por lo que no es necesario comprobar ninguna contraseña), pueden responder al usuario de inmediato. De esta forma, pueden evitar el lento cálculo que supone el uso del hash de la contraseña. Si el nombre de usuario era correcto, codificarán la contraseña ingresada y la compararán con el hash almacenado.
En este punto, es posible que haya adivinado dónde pueden ir mal las cosas. Aunque en realidad el hashing solo tarda unos pocos milisegundos, un hacker puede aprovechar este retraso adicional para averiguar si el nombre de usuario que ha introducido es correcto o no, ya que un nombre de usuario incorrecto responderá un poco más rápido porque no se ha realizado ningún hashing. Este tipo de ataque de canal lateral se denomina ataque cronometrado y es un buen ejemplo de cómo diferentes requisitos no funcionales pueden contrarrestarse entre sí. A veces, el código no puede ser rápido y seguro al mismo tiempo.
Por lo tanto, aunque las contraseñas se manejan perfectamente y el mensaje que se muestra es genérico y no informa si la contraseña o el nombre de usuario eran incorrectos, el sistema sigue siendo vulnerable. La solución es sencilla: usar siempre un hash para la contraseña o retrasar el envío de la respuesta el tiempo necesario para hacerlo.
Un atacante puede utilizar la información obtenida para obtener una lista de usuarios del sistema. Esta información se puede usar para atacar la aplicación web, por ejemplo, mediante un ataque de fuerza bruta o con un nombre de usuario o contraseña predeterminados.
Tabla de contenido
Investigador de seguridad de aplicaciones - Ingeniero de I+D - Candidato a doctor

Secure Code Warrior aquí para que su organización le ayude a proteger el código durante todo el ciclo de vida del desarrollo de software y a crear una cultura en la que la ciberseguridad sea una prioridad. Ya sea administrador de AppSec, desarrollador, CISO o cualquier persona relacionada con la seguridad, podemos ayudar a su organización a reducir los riesgos asociados con el código inseguro.
Reserve una demostraciónDescargarRecursos para empezar
Temas y contenido de formación sobre código seguro
Nuestro contenido líder en la industria siempre está evolucionando para adaptarse al cambiante panorama del desarrollo de software teniendo en cuenta su función. Se ofrecen temas que abarcan desde la IA hasta la inyección de XQuery para distintos puestos, desde arquitectos e ingenieros hasta directores de productos y control de calidad. Obtenga un adelanto de lo que ofrece nuestro catálogo de contenido por tema y función.
La Cámara de Comercio establece el estándar para la seguridad impulsada por desarrolladores a gran escala
Kamer van Koophandel comparte cómo ha integrado la codificación segura en el desarrollo diario mediante certificaciones basadas en roles, evaluaciones comparativas de Trust Score y una cultura de responsabilidad compartida en materia de seguridad.
Modelado de amenazas con IA: convertir a cada desarrollador en un modelador de amenazas
Saldrá mejor equipado para ayudar a los desarrolladores a combinar ideas y técnicas de modelado de amenazas con las herramientas de IA que ya utilizan para reforzar la seguridad, mejorar la colaboración y crear software más resistente desde el principio.
Recursos para empezar
Cybermon está de vuelta: las misiones de IA de Beat the Boss ya están disponibles bajo demanda.
Cybermon 2025 Beat the Boss ya está disponible durante todo el año en SCW. Implemente desafíos de seguridad avanzados de IA y LLM para fortalecer el desarrollo seguro de la IA a gran escala.
Explicación de la Ley de Ciberresiliencia: qué significa para el desarrollo de software seguro por diseño
Descubra qué exige la Ley de Ciberresiliencia (CRA) de la UE, a quién se aplica y cómo los equipos de ingeniería pueden prepararse con prácticas de diseño seguras, prevención de vulnerabilidades y desarrollo de capacidades para desarrolladores.
Facilitador 1: Criterios de éxito definidos y medibles
El habilitador 1 da inicio a nuestra serie Enablers of Success, de 10 partes, mostrando cómo vincular la codificación segura con los resultados empresariales, como la reducción del riesgo y la velocidad para lograr la madurez del programa a largo plazo.




%20(1).avif)
.avif)
