I just found out that if someone sends a PM to other person. Let’s say from account joe to jane, and for some reason someone (logged in) finds out the right “topic ID” it can read the PM.
I know is kinda a edge-case and is rather difficult to find out, but automating some kind of scraper to cicle trough all the topics ID anyone could read all the PMs.
I found out because a user replied to the notification email, and I was able to click the link and read the PM in question.
I’m assuming you are a staff member on the forum? You should only be able to do this if you are staff. Staff should have the ability to audit PMs by default, and admins and those with access to the DB would have access to the raw messages anyway.
If you’re needing to provide a truly private system, there is the discourse-encrypt plugin which provides end-to-end encryption of messages.
This is only true for admins, not moderators, so I am editing your title which is incorrect. Moderators also only have access to PMs when they are flagged.
If this is a concern, demote yourself to moderator (by logging in under a different account to taste), or enable logging of PM visits by admins in your site settings.
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.