Acabo de descubrir que si alguien envía un mensaje privado a otra persona. Digamos que desde la cuenta joe a jane, y por alguna razón alguien (con sesión iniciada) descubre el “ID del tema” correcto, puede leer el mensaje privado.
Sé que es un caso bastante marginal y es bastante difícil de descubrir, pero automatizar algún tipo de raspador para recorrer todos los IDs de temas permitiría leer todos los mensajes privados.
Lo descubrí porque un usuario respondió al correo de notificación y pude hacer clic en el enlace y leer el mensaje privado en cuestión.
Asumo que eres miembro del personal del foro, ¿verdad? Solo deberías poder hacer esto si eres personal. El personal debería tener la capacidad de auditar mensajes privados por defecto, y los administradores y quienes tengan acceso a la base de datos tendrían acceso a los mensajes en bruto de todos modos.
Si necesitas proporcionar un sistema verdaderamente privado, existe el complemento discourse-encrypt, que ofrece cifrado de extremo a extremo para los mensajes.
Esto solo es cierto para los administradores, no para los moderadores, por lo que estoy editando tu título, que es incorrecto. Los moderadores también solo tienen acceso a los mensajes privados cuando están marcados.
Si esto es una preocupación, rebájate a moderador (iniciando sesión con una cuenta diferente para probar) o habilita el registro de visitas a mensajes privados por parte de los administradores en la configuración de tu sitio.
Pregunta potencialmente tonta: ¿dónde está exactamente esta configuración? Estamos en estable (que realmente debería tener este control, en teoría) y no puedo encontrarlo por nada del mundo.
Editar: Nuestro otro administrador lo encontró: es “registrar vistas de mensajes personales” en la pestaña “Usuarios”. Argumentaría que debería ser algo de la pestaña de Seguridad, pero puedo ver por qué estaría allí si lo pienso por un minuto.
Pregunta de seguimiento: ¿es posible habilitar el registro cuando un administrador ha visto los mensajes que tiene una cuenta, incluso si no abrió un mensaje para leer su contenido?
En el contexto de nuestro foro, sería posible que los administradores abusen de su poder simplemente al ver los detalles de ciertos mensajes privados de los que un usuario puede ser parte; leer el contenido no es necesariamente más dañino que saber el nombre y qué usuarios tienen acceso, lo cual actualmente no se registra a pesar de tener esa configuración habilitada. Idealmente, nos gustaría solucionar esto, y también registrar cada vez que un administrador ve los mensajes de los que un usuario es parte en lugar de solo cuando ve el contenido de un mensaje específico.
La mejor manera de hacerlo es con cifrado de extremo a extremo, que es posible gracias a nuestro plugin discourse-encrypt.
Los administradores son administradores del foro y tienen acceso a todos los datos. Hay muchas maneras para que los administradores vean el contenido de los mensajes sin que se registre:
descargar una copia de seguridad
explorador de datos
suplantación de identidad
crear claves de API
Para proteger completamente a los usuarios, la mejor solución es utilizar mensajería cifrada. Si no confías en tus administradores, no deberían ser administradores.
Mi entendimiento es que la mayoría de esas cosas son registrables, que es todo lo que realmente necesitamos. Para ser honesto, no estoy seguro de confiar en mí mismo para no terminar mirando la página de mensajes de un usuario por accidente y luego seguir adelante como si nada hubiera pasado, lo que en nuestro caso podría ser perjudicial (en particular, no esperamos que sea un riesgo de seguridad, sino un riesgo de integridad, es decir, no se produce daño a largo plazo siempre que el usuario que ha obtenido acceso a este conocimiento sea abierto al respecto y se abstenga de temas relevantes).\n\nCiertamente facilitaría mucho asegurar que nadie haga esto por accidente o a propósito sin informarlo si se registrara junto con todas las demás formas en que podrían acceder a los mismos datos.\n\nSi esas cosas que enumeraste no son registrables, entonces realmente deberían serlo, pero aun así solo ayudaría contra un administrador malicioso y no contra uno un poco descuidado.
Puedes ocultar/ofuscar los títulos de los mensajes en las listas de mensajes de otros usuarios usando el tema de tu sitio.
Si es a propósito, es un asunto diferente.
Otros lugares donde podrías obtener esta información de auditoría: los registros del servidor web.
Estoy seguro de que un plugin para registrar esta información no sería difícil, pero no estoy seguro de si debería estar en nuestra hoja de ruta interna.
¿Cómo sería posible hacer esto sin oscurecer también tus propias listas de mensajes? Hasta donde sé, no hay una “slug” con el nombre de usuario de la cuenta que estás viendo que puedas usar para afectar solo a las páginas de mensajes que no son tuyas con CSS.
Mi principal problema es que mi script parece extraer los datos antes de que se actualicen; es decir, puedo leer los metadatos en un cambio de página, pero se actualiza antes de que se actualicen los datos de la página.
<script type="text/discourse-plugin" version="0.8">
api.onPageChange(() =>{
window.onload = determineUser();
});
function determineUser() {
var pageURL = document.querySelector("meta[property='og:url']").getAttribute("content");
var userPage = pageURL.includes("https://www.fortressoflies.com/u/");
document.documentElement.style.setProperty('--currUsername', pageURL);
if(userPage)
{
document.documentElement.style.setProperty('--lastUsername', pageURL);
}
}
</script>
Básicamente, mi --currUsername se actualiza, luego la etiqueta meta se actualiza con la nueva URL, por lo que mi --currUsername siempre está una página por detrás de lo que estoy realmente viendo. Esto ocurre independientemente de si tengo o no la línea “window.onload”.
¿Alguna idea de qué estoy haciendo mal?
El objetivo final es básicamente agregar una clase al cuerpo según la página que estés viendo, y luego estilizar en base a eso. Debería permitirnos leer, por ejemplo, ese campo de título en lugar del campo og:url, y luego aplicar una clase “myMessages” al cuerpo para obtener el efecto deseado en este caso. En teoría.