Hemos reconstruido las cuentas de Luxine: contraseñas nuevas, verificación por correo y multicuenta
Tras el aviso de SifG22 he rehecho desde cero el sistema de cuentas. Por seguridad hemos reiniciado todas las contraseñas. Te cuento qué ha cambiado, cómo recuperar tu acceso y por qué los paneles con aspecto de terminal eran una pista de lo que venía.

Hace dos días conté el fallo que el equipo SifG22 me demostró: mi sistema de recuperación de contraseña dejaba entrar en una cuenta ajena sin comprobar de verdad quién la pedía. Cerré el acceso, las cuentas y los comentarios, y prometí volver con el sistema rehecho.
Ya está. Y no ha sido un parche: he reconstruido la autenticación entera.
Aviso importante antes de nada: hemos reiniciado las contraseñas de todas las cuentas. Ninguna contraseña anterior sirve ya. Abajo explico exactamente cómo recuperar tu acceso según tu caso.
Lo primero: cómo vuelves a entrar
Hay dos situaciones, y dependen de si tenías un correo de recuperación vinculado.
Si tenías correo de recuperación
Puedes hacerlo tú solo, ahora mismo. Ve a Iniciar sesión → «He olvidado mi contraseña» y sigue los tres pasos. A quienes estáis en este caso ya os hemos enviado un aviso a vuestro correo.
Si no tenías correo de recuperación
Necesitas que te emita una contraseña temporal, pero no tienes que buscarme: intenta el proceso igualmente. Al poner tu usuario, si la cuenta existe y no tiene correo vinculado, me llega un aviso automático y me pongo con ello.
Puedes escribirme además a contactoluxine@gmail.com indicando tu nombre de usuario, sobre todo si tardo. Al entrar con la temporal, la web te obligará a elegir una contraseña propia inmediatamente.
Es más incómodo, y lo siento. Pero la alternativa —darle acceso a quien simplemente dice ser tú— es justamente el fallo que me señaló SifG22.
Qué ha cambiado, una cosa por una
Recuperar la contraseña ya no es adivinar un correo
Este era el agujero. Antes, con acertar tu nombre de usuario y tu correo de recuperación, el sistema te dejaba cambiar la contraseña. El problema salta a la vista en cuanto lo dices en voz alta: el correo de alguien no es un secreto. Es algo que aparece en un perfil, en un comentario antiguo, en cualquier sitio.
Así de corto era. Esto es lo que bastaba para entrar en una cuenta ajena:
Ahora el correo ya no es la prueba, es solo el destinatario. El proceso va en tres pasos:
- Pones tu usuario y tu correo.
- Te enviamos un código de 6 dígitos a ese correo. Si no eres tú, el código llega al buzón del dueño real y tú te quedas fuera.
- Solo después de verificar el código puedes elegir contraseña nueva.
El código caduca a los 15 minutos, admite 5 intentos y se quema al usarlo. Y hay un detalle que importa: cuando los datos no cuadran, el sistema responde exactamente igual que cuando sí cuadran. Antes, un mensaje distinto para «ese usuario no existe» convertía el formulario en una herramienta para averiguar qué cuentas hay registradas.
Además, el envío de correo ahora funciona de verdad. En el sistema anterior el enlace de recuperación simplemente no llegaba, pero la web daba el envío por bueno. Eso era mentirle al usuario, y estaba en mi código.
Aquí lo tienes para pulsarlo. En el paso 2 hay dos botones: uno hace de dueño de la cuenta, el otro de alguien que solo conoce el correo.
Contraseñas temporales que caducan
Para las cuentas sin correo, un administrador puede emitir una contraseña temporal. Pero con reglas estrictas:
- Caduca (por defecto en 24 horas).
- Quien entra con ella no puede usar la web hasta definir una contraseña propia. No es una sugerencia: cualquier página a la que intente ir le devuelve a la pantalla de cambio.
- Emitirla destruye la contraseña anterior. Si la cuenta estaba comprometida, la vieja deja de servir en ese instante.
- Se muestra una sola vez. En la base de datos solo queda su huella cifrada. Si se pierde, no se puede consultar: hay que emitir otra.
Y la parte que más me importa dejar clara: yo no veo vuestras contraseñas. Ni la temporal una vez cerrada la ventana, ni —sobre todo— la que elegís después. Lo único que queda registrado es la fecha en que la cambiasteis. No es una promesa, es que técnicamente no existe en ningún sitio donde pueda leerla.
Como eso hay que creérselo, mejor enseñarlo. Esto es exactamente lo que veo yo de una cuenta cualquiera:
Varias cuentas en el mismo navegador
Esto no es seguridad, es comodidad, pero lo he aprovechado para hacerlo bien. Ahora puedes tener varias cuentas abiertas a la vez y cambiar entre ellas desde el menú de usuario sin reescribir la contraseña, como en el correo.
Cada cuenta guarda su propia sesión por separado, y todas siguen caducando a la hora exacta. Tener varias abiertas no alarga el acceso de ninguna.
Y lo justo es demostrarlo, no solo decirlo. Aquí están los mismos intentos de antes, ejecutados contra el sistema de hoy:
Las sesiones ahora se pueden cortar de verdad
Antes, una sesión iniciada seguía siendo válida hasta caducar, pasara lo que pasara. Ahora quedan registradas y se cortan solas cuando toca: al cambiar tu contraseña se cierran todas las demás sesiones de tu cuenta. Si alguien había entrado con tu contraseña antigua, lo expulsa en el acto.
Transferir tu historial a otra cuenta
Si tenías cuentas repetidas o quieres consolidar, puedes mover tus comentarios a otra cuenta tuya. Requiere tu contraseña y escribir una frase de confirmación, para que no pase por accidente. Queda registrado: yo veo que el traspaso ocurrió, entre qué cuentas y cuándo. Nunca ninguna contraseña.
Sobre los paneles con aspecto de terminal
Varios me lo habéis preguntado estos días: por qué los paneles internos tienen esa pinta de consola, con los $ comando y el verde sobre negro.
La respuesta corta: sí, era una pista.
Cuando empecé a rehacer esto, lo primero que cambió no fue el código de seguridad sino la interfaz de administración. No por capricho estético. Un panel que parece una terminal te obliga a tratar cada acción como lo que es: un comando con consecuencias, no un botón bonito que pulsas sin pensar. $ ban, $ chmod, $ passwd -t. Cuando la pantalla te lo escribe así, te lo piensas dos veces antes de pulsar.
Y hay algo más práctico. Al rediseñarlos tuve que enumerar, una por una, todas las acciones que un administrador podía ejecutar. Ese inventario fue lo que me hizo ver cuáles no pedían confirmación, cuáles no quedaban registradas en ningún sitio y cuáles —las más graves— no exigían volver a escribir mi contraseña. Hoy cambiar un rol o emitir una temporal me pide mi contraseña de administrador cada vez, aunque tenga la sesión abierta.
Así que cuando visteis aparecer esos paneles, lo que estabais viendo era el principio de este trabajo. La reconstrucción ya estaba en marcha.
Lo que no he resuelto
Prefiero decirlo a que lo descubráis vosotros.
- Las cuentas sin correo dependen de mí. El aviso automático hace que me entere, pero no resuelve el fondo: no hay forma de verificar que alguien es quien dice ser sin un canal verificado, así que la comprobación la sigo haciendo yo a mano. Si tardo en responder, esa gente espera. La única solución real es que vinculéis un correo de recuperación en cuanto entréis.
- El límite de intentos vive en memoria del servidor. En la práctica frena la fuerza bruta desde una IP, pero un atacante repartido entre varias instancias conseguiría más intentos que el límite nominal. Está identificado y lo moveré a un almacén compartido.
- Esto no ha pasado por una auditoría externa. He corregido lo que SifG22 encontró y lo que yo mismo he visto al revisarlo. Eso no es lo mismo que decir que no queda nada.
Si encuentras algo
La forma en que SifG22 hizo esto —avisarme en privado, demostrarlo sin difundir ningún dato— es exactamente la correcta. Si encuentras algo raro, escríbeme a contactoluxine@gmail.com antes de contarlo por ahí. Lo agradeceré, aunque sea una tontería.
Gracias por la paciencia estos días. Y gracias a SifG22: un aviso de un amigo cuesta mucho menos que la alternativa.
Todo junto, para terminar
Si solo vas a mirar una cosa de todo el artículo, que sea esta. Las mismas órdenes contra el sistema de antes y el de ahora:
El usuario pide recuperar su contraseña.
luxine_fanl***n@gmail.comAntes, este paso ya permitía cambiar la contraseña. Ese era el fallo.
Hay que demostrar acceso a ese buzón.
Solo ahora se puede elegir contraseña.
••••••••••••••••••••••••Nadie más la ve, tampoco el administrador: solo queda la fecha del cambio.
INVESTIGACIÓN RECIENTE (COMENTARIOS)