Registro de cambios

NeoFrag Reborn 1.2.48

Luandre 9 oct 2026 9 min de lectura 24
Índice
Índice

Un lote grande: una auditoría de seguridad (accesos, inyecciones, cuentas, archivos), una moderación que por fin funciona — sus sanciones se aplican ahora a todo lo que escriben los miembros —, una nueva dirección de correo confirmada antes de contar, la eliminación de las cuentas inactivas, y el inicio de sesión con Discord, GitHub o Google reparado. El bot de Discord pasa a la versión 0.2.5 (consulta su propio registro de cambios). En un sitio con HTTPS, todo el mundo vuelve a iniciar sesión una vez tras la actualización: la cookie de sesión cambia de nombre.

Seguridad

  • La búsqueda del foro, abierta a los visitantes, permitía una inyección SQL a través de una palabra escrita entre comillas; la búsqueda de la mensajería privada tenía el mismo fallo. Esa palabra se limpia ahora como las demás, y la escapa la propia base de datos.
  • Un envío que llega de otro sitio se rechaza (POST, PUT, DELETE…), según lo que dice el navegador (Sec-Fetch-Site, si no Origin): una página trampa ya no puede hacer actuar a un miembro conectado sin que lo sepa. Un cliente sin navegador — el bot, un servicio de pago — no se ve afectado.
  • Veinte acciones que cambiaban algo con un simple enlace exigen ahora el token de sesión, o solo aceptan POST: seguir un tema, convertirlo en anuncio, marcarlo todo como leído, salir de una conversación, archivarla, eliminarla o restaurarla, reaccionar, marcar las notificaciones como leídas, dar su disponibilidad para un evento, abrir o cerrar el sitio y los registros, lanzar una copia de seguridad o una actualización, eliminar un campo de reclutamiento… Cerrar la sesión con un enlace sin token pide una confirmación con un botón.
  • En HTTPS, para un sitio instalado en la raíz de su dominio, la cookie de sesión lleva el prefijo __Host-: un subdominio (una demo, un webmail) ya no la recibe y ya no puede imponer una. Un sitio instalado en una subcarpeta conserva una cookie sin este prefijo, que solo cambia de nombre.
  • Cuentas:
    • el enlace «contraseña olvidada» también servía como enlace de confirmación del registro, que inicia sesión sin pedir nada durante dos días: cada enlace solo sirve ahora para lo suyo;
    • cambiar la contraseña anula una nueva dirección pendiente y los enlaces «contraseña olvidada»;
    • los fallos de inicio de sesión se cuentan por cuenta — se escriba como se escriba — y por red: una dirección IPv6 cuenta por su red /64, en todos los límites de intentos del sitio;
    • activar la autenticación en dos pasos o vincular una cuenta de Discord, GitHub o Google vuelve a pedir la contraseña; cinco errores bloquean esta confirmación durante un cuarto de hora;
    • «contraseña olvidada» responde lo mismo esté o no registrada una dirección, y el registro solo dice que una dirección ya está ocupada cinco veces por hora y por red;
    • el historial de inicios de sesión anota la dirección de la conexión, ya no una cabecera que elige el navegador.
  • Doce fugas de acceso cerradas: el historial y las revisiones de una página del wiki en borrador; las categorías VIP del foro, a través de la búsqueda y los perfiles; los grupos ocultos; la imagen de un álbum cerrado; los partidos de un tipo restringido; la presencia que los participantes habían ocultado; los comentarios y reacciones sobre contenido oculto; denunciar una conversación de la que no se forma parte.
  • Dos direcciones antiguas de la mensajería privada devolvían los mensajes de cualquier conversación, incluso privada, a cualquiera con derecho de lectura — visitantes incluidos: retiradas. Publicar una imagen en la galería solo exigía el derecho de ver el álbum.
  • Los adjuntos del foro y de las conversaciones los sirve el sitio, a quien puede leer el tema o la conversación, ya no el servidor web a cualquiera que tuviera su dirección. Una imagen o un PDF se muestra, todo lo demás se descarga; un adjunto que un navegador ejecutaría se rechaza al subirlo. En Apache, el upload/.htaccess incluido se encarga; en nginx o Caddy, copia en la configuración de tu servidor la regla que bloquea upload/forum/ y upload/talks/ (mira los nginx.conf y Caddyfile incluidos).
  • Lo que el servidor va a buscar él mismo (relevo de imágenes, canales RSS, webhooks) se limita a direcciones estrictamente públicas, en los puertos 80 y 443.
  • Las claves de Stripe ya no se ven en claro en la administración: guardadas cifradas, nunca vuelven a mostrarse.
  • Demo: las direcciones IP de los visitantes, los nombres de host y los sitios de procedencia ya no se muestran; un anuncio, un enlace, un socio que lleva fuera del sitio se muestra en una página que dice adónde lleva, en lugar de redirigir allí.
  • Un enlace javascript: ya no puede mostrarse en lugar de una dirección: la página de la que venía una sesión (administración), los enlaces de un partido (sitio del rival, stream, artículo). El enlace que una denuncia da hacia el contenido denunciado solo puede llevar a una página del sitio.

Añadido

  • Una nueva dirección de correo espera su confirmación: el enlace va a la nueva dirección (válido dos días), se avisa a la antigua, y «Mi cuenta» ofrece reenviar el enlace o cancelar. Hasta ahora, una errata dejaba al miembro sin nada de lo que envía el sitio.
  • Las cuentas inactivas se eliminan: sin visitas desde hace tres años — ajustable en Ajustes, 0 para nunca —, un correo avisa al miembro un mes antes, y una visita lo anula todo. Nunca un administrador.
  • Sancionar a un miembro sin esperar una denuncia, desde su historial de moderación, al que enlaza su página de administración.
  • El botón de denuncia (la banderita «Reportar este contenido») en el libro de visitas, las imágenes de la galería, los anuncios clasificados, los tickets y sus comentarios.
  • «Mis sanciones» en el área de miembros, para quien haya tenido una en el año: su tipo, su motivo, su periodo.
  • Mediación: a partir de una denuncia, el moderador propone una conversación privada entre él, el miembro denunciado y quien denunció. El miembro denunciado verá allí quién lo denunció, así que solo se abre con el acuerdo de quien denunció, dado en una página que explica lo que acepta; si lo rechaza, su denuncia sigue siendo anónima y continúa como de costumbre.

Corregido

  • Las sanciones de moderación se aplican a todo lo que escriben los miembros: foro, mensajería privada, comentarios, libro de visitas, gestor de errores, reclutamiento, anuncios clasificados, galería, perfil, imágenes subidas en el editor de texto. Solo se comprobaba el silencio del foro y de la mensajería, y después del envío. El formulario deja paso a un aviso que dice qué prohíbe la sanción, hasta cuándo y por qué; la sanción «Restricción: enlaces» rechaza un texto que lleva un enlace, sin perderlo.
  • No se podía imponer ninguna sanción desde la pantalla de moderación: un error interno lo impedía, así que la escalada automática nunca se disparaba. Revisados al mismo tiempo: los ajustes (casillas que no se podían desmarcar, umbral de denunciante sospechoso), los ámbitos, las duraciones (un baneo temporal sin duración se volvía definitivo), la validación por un moderador de rango superior, el panel de los moderadores, las denuncias duplicadas, las páginas a partir de la 2, la lista de IP. Un moderador ya no puede levantar una sanción que le afecta, ni la de un miembro de rango igual o superior, ni una impuesta por un moderador de rango superior.
  • El shadow ban funciona: lo que escribe un miembro con shadow ban solo se muestra a él y a los moderadores, y no se difunde nada — ninguna notificación, nada de Discord, ningún suscriptor.
  • Un rol adicional — Moderador — quitaba derechos a un miembro: un moderador perdía el foro y la mensajería privada. Un rol añade derechos, ya no quita ninguno.
  • Los correos se envían en el idioma de quien los recibe — sanciones, respuestas en el foro, mensajería privada —, ya no en el del miembro que los provocó.
  • El inicio de sesión con Discord, GitHub o Google fallaba en cuanto un servicio estaba configurado (la biblioteca OAuth había cambiado), y enviaba al servicio una dirección de retorno que este rechazaba. Un retorno rechazado dice ahora por qué en lugar de una página de error, y el avatar de Discord vuelve a importarse.
  • Libro de visitas, administración: aprobar, rechazar o eliminar un mensaje llevaba a un error «página no encontrada».
  • El error de un campo de formulario se escribe bajo el campo, en un teléfono como en un ordenador: solo se podía leer en una burbuja al pasar el ratón.
  • La barra superior de la administración se queda arriba al desplazarse; en un teléfono, solo el menú y la miga de pan quedan fijos.
  • Treinta y cuatro errores de traducción en doce archivos de idioma («There are 1 user», confirmaciones de eliminación que mostraban < br / >, plurales ingleses…).
  • La dirección del sitio web que declaran 48 addons del núcleo es la del proyecto, ya no la del NeoFrag original. La página Plantillas de correo de la administración ya no lista las plantillas de un módulo no instalado. Un error en algunos formularios (límite del libro de visitas alcanzado, eliminación de la cuenta, autenticación en dos pasos, contraseña, creación de un miembro en la administración) ya no lleva a un error «página no encontrada».
  • Demo: un miembro corriente no podía abrir un tema, responder en ninguna parte ni presentar ninguna candidatura.
  • La exportación «Mis datos» incluye las denuncias que hizo el miembro: faltaban en el archivo.

Cambiado

  • Un widget ligado a un módulo depende ahora de él (21 widgets): sin ese módulo, o si está desactivado, el widget ya no se muestra y el editor en vivo ya no lo ofrece; «Añadir» rechaza un archivo de widget sin su módulo.
  • La documentación del producto ya no se incluye en el wiki de un sitio nuevo, que llega vacío; vive en el sitio del proyecto. Una instalación nueva ya no recibe los ajustes de temas que no tiene.

Eliminado

  • Las antiguas direcciones ajax/talks de la mensajería privada, y su antigua denuncia de mensajes, que solo escribía en el registro de auditoría, con su página de administración «Reportes de mensajes»: un mensaje se denuncia ahora a través de la moderación.

Lee también

0
Comentarios

Gestionar mis cookies

El sitio solo instala las cookies necesarias para su funcionamiento: no requieren su consentimiento. Los demás servicios pertenecen a otras empresas; solo se cargan si los acepta. Su elección se guarda seis meses, y puede cambiarla en cualquier momento.

Necesarias para el sitio Siempre activas

  • __Host-session Mantiene su sesión iniciada y protege los formularios contra envíos fraudulentos. Hasta que se cierra el navegador; un año con «Recordarme»
  • nf_consent Guarda las elecciones que hace en esta ventana. 6 meses
  • nf_fuseau Muestra las fechas y las horas en su zona horaria. 1 año
  • Almacenamiento del navegador Guarda su elección entre el modo día y el modo noche, y la presentación elegida para la lista de artículos. Hasta que lo vacíe

Vídeos

Los vídeos integrados en las páginas: el reproductor viene de la plataforma, que recibe su dirección IP y puede instalar sus cookies.

Música

Las canciones y listas de reproducción integradas en las páginas: el reproductor viene de la plataforma, que recibe su dirección IP y puede instalar sus cookies.