Loading
_ DESCIFRANDO CONEXIÓN SEGURA...

Modo depuración y consolas de diagnóstico

5 tareas · 35 min · Principiante

Cada framework trae un modo pensado para quien programa, y ese modo no distingue entre el desarrollador y un visitante cualquiera. Ediciones Nogal Negro tiene cinco aplicaciones escritas con cinco frameworks distintos, y su monitoreo externo guardó un error de cada una durante la semana. Te entregan esas respuestas, la forma en que arranca cada servicio y las notas del equipo. Todo es lectura: no se provoca ningún error ni se abre ninguna consola.

0 de 5 · 0%

Objetivo de la sala

Cada framework trae un modo pensado para quien programa, y ese modo no distingue entre el desarrollador y un visitante cualquiera. Ediciones Nogal Negro tiene cinco aplicaciones escritas con cinco frameworks distintos, y su monitoreo externo guardó un error de cada una durante la semana. Te entregan esas respuestas, la forma en que arranca cada servicio y las notas del equipo. Todo es lectura: no se provoca ningún error ni se abre ninguna consola.

Todo framework web tiene un interruptor de depuración. En Django es el ajuste DEBUG; en Laravel, la variable APP_DEBUG; en Express, el detalle de los errores depende del entorno que declara la variable NODE_ENV; en Flask, el modo se enciende con una opción al arrancar su servidor de desarrollo. Encendido, el framework enseña lo que necesita quien está programando: la traza, el código alrededor de la línea que falló, rutas de archivo, a veces los ajustes y las consultas.

Hay dos niveles de gravedad. El primero es una fuga de información: el visitante recibe el plano de la aplicación. El segundo es peor: algunos depuradores son interactivos. La documentación de Flask advierte que el depurador de su servidor de desarrollo permite ejecutar código Python desde el navegador, que lo protege un PIN y que ese PIN no debe tomarse como garantía. Una consola así publicada ya no es una fuga: es una puerta.

El Top 10 de OWASP de 2025 recoge ambos casos dentro de A02, configuración incorrecta: errores que enseñan trazas al usuario y ajustes de frameworks que no tienen valores seguros.

Responde para continuar

¿Por qué el depurador interactivo de Flask en producción es más grave que una traza de error?

Ver pista de ayuda

Piensa en la diferencia entre leer información y poder actuar sobre el servidor.

Un ajuste escrito en un archivo no dice nada hasta que se sabe qué archivo carga el proceso y con qué orden arranca. Por eso la revisión de configuración empieza por la unidad de servicio y no por el repositorio: ahí se ve el módulo de ajustes que se usa, las variables de entorno que se pasan y si lo que corre es un servidor de producción o el de desarrollo que trae el framework.

La documentación de Flask es clara en este punto: ni su servidor de desarrollo ni su depurador deben correr en producción. Abre servicios-produccion.txt y lee la orden de arranque de cada servicio.

Responde para continuar

¿Qué unidad de servicio arranca un servidor de desarrollo con el depurador interactivo encendido? Escribe su nombre tal como aparece.

Ver pista de ayuda

Busca la opción de depuración en la columna de la orden de arranque.

La página de depuración de Django incluye los ajustes de la aplicación. Para no regalar claves, tapa los ajustes cuyo nombre contiene ciertas palabras en inglés (las que indican una clave, una contraseña, un secreto, una firma, un token o una API) y lo hace por coincidencia parcial dentro del nombre. Lo que no hace es mirar el valor: si el nombre no contiene ninguna de esas piezas, el valor sale tal cual.

Eso es un problema real en equipos que nombran sus ajustes en español. Y aunque el filtro funcione, la misma página sigue mostrando rutas de archivo, nombres de servidores internos y el resto de la configuración. Abre respuesta-tienda-500.txt y lee la sección de ajustes línea por línea.

Responde para continuar

¿Qué ajuste de la tienda muestra una credencial en claro en la página de depuración? Escribe su nombre tal como aparece.

Ver pista de ayuda

Busca un valor que no esté tapado con asteriscos y que parezca una clave.

Ahora compara las cinco respuestas guardadas. Cuenta como detalle interno cualquier cosa que solo le sirve a quien conoce el código: una traza, una ruta de archivo del servidor, el mensaje de la excepción, ajustes o el nombre de un servidor interno. Una página genérica con el código de estado y la ruta que se pidió no cuenta: es lo que debería recibir cualquier visitante.

Fíjate en que la nota del equipo sobre la tienda no coincide con lo que muestra su respuesta. Eso también es un hallazgo, y lo resuelve la sala de valores por defecto.

Responde para continuar

¿Cuántos de los cinco servicios entregan al visitante algún detalle interno en su respuesta de error? Escribe solo el número.

Ver pista de ayuda

Abre los cinco archivos de respuesta y separa los genéricos de los que enseñan código o ajustes.

Los tres casos tienen la misma causa: el modo de desarrollo encendido en producción, cada uno con el interruptor de su framework. La remediación no es esconder las páginas de error, porque el error seguiría generándose con todo su detalle, sino apagar el modo en el arranque de cada servicio y dejar el detalle en el registro del servidor. El orden lo marca la gravedad: primero lo que permite actuar, después lo que entrega credenciales, después lo que entrega el plano.

Responde para continuar

¿Qué recomendación cierra los hallazgos de esta sala?

Ver pista de ayuda

El error se sigue generando con todo su detalle aunque cambie quién lo ve.

Inicia sesión para registrar tus puntos y progreso en el ranking.

Whoami-Labs Pro

Whoami-Labs Pro utiliza cookies

Utilizamos cookies y almacenamiento local para el funcionamiento del sitio, seguridad de sesión y, si lo autorizas, analítica y marketing. Puedes aceptar, rechazar o personalizar. Política de Privacidad