fix: clean console.logs in production - #122
Open
mfagundez-4geeks wants to merge 5 commits into
Open
Conversation
Seis console.log imprimian credenciales en la consola del navegador y llegaban intactos al bundle de produccion, sin proteccion por DEV_MODE: - store.tsx: la respuesta completa del login (rigoToken + usuario), el par token/bc_token, y el token de Rigobot en fetchExercises y getSession - apiCalls.ts: el token en isPackageAuthor - TestLatex.tsx: el token en testLatex Son logs de depuracion sin valor operativo, asi que se eliminan.
…cacion
Volcar el error de axios entero con console.error("...", error) publica
error.config.headers en las devtools, y ahi viaja la cabecera de
autenticacion (Authorization o x-rigo-token). Era una fuga menos evidente
que los console.log, pero mucho mas extendida.
Se anade el helper describeError en src/utils/logging.ts, que conserva lo
util para soporte (mensaje, estado, metodo y URL) y descarta siempre
cabeceras, configuracion y request. Ademas redacta los parametros de query
sensibles, porque algunas peticiones llevan el token en la URL
(/v1/auth/me/token?breathecode_token=...). En los errores que no son de red
mantiene la traza, que ahi es el dato principal.
Se aplica en los 11 archivos que montan cabeceras con token. En telemetry
se elimina ademas el bloque que volcaba data, status y headers de la
respuesta por separado.
minify: true usa esbuild, que minifica pero no elimina las llamadas a consola, asi que los mas de 400 console.log del proyecto viajaban intactos al bundle. Se anade esbuild.pure para descartar console.log, console.debug y console.info. Se conservan console.error y console.warn a proposito: el IDE no tiene Sentry, ni ErrorBoundary, ni window.onerror, asi que son su unico canal de diagnostico y un drop global dejaria a soporte a ciegas. Como pure habria silenciado varios diagnosticos reales que estaban escritos como console.log, se promueven a console.error: los tres fallos de telemetria (progreso que no se guarda), el fallo al cargar los ejercicios y el fallo al inicializar RigoAI.
Cinco console.error/warn señalaban situaciones que el codigo ya resuelve con una clausula de guarda (icono inexistente, enlace de YouTube sin id, blob vacio, slug que no es string, grupo de quiz ausente). No describen ninguna incidencia accionable para soporte y solo anaden ruido. En store.tsx se unifica el catch de getSession, que hacia console.error(e) sin contexto seguido de un console.log con el mensaje: ahora es una unica llamada con mensaje y error saneado.
The comments introduced along with the token-leak fix were written in Spanish, while the rest of the codebase documents itself in English. Translates the JSDoc blocks and inline comments in src/utils/logging.ts and vite.config.ts. No behaviour change.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
fix learnpack/learnpack#2111
Fuga de tokens en los logs de producción
El bundle exponía credenciales en la consola del navegador por dos vías: seis
console.logque volcaban elrigoTokeny elbc_token(uno de ellos, la respuesta completa del login), y losconsole.errorque registraban el error de axios entero, arrastrandoconfig.headerscon la cabecera de autenticación. Agravado porminify: true(esbuild), que no elimina las llamadas a consola.Se eliminan los seis
console.logcon credenciales y se añade el helperdescribeError(src/utils/logging.ts), que conserva mensaje, estado, método y URL, descarta siempre cabeceras y configuración, y redacta los parámetros de query sensibles (alguna petición lleva el token en la URL). Aplicado en los 11 archivos que manejan tokens.Limpieza de console.logs en producción
vite.config.tsañadeesbuild.purepara descartarconsole.log/debug/infoy conservarconsole.erroryconsole.warn.Verificado sobre el bundle compilado: las cinco cadenas con token pasan de 1 a 0 apariciones y los mensajes de diagnóstico siguen presentes.