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.
Pergunta potencialmente idiota - onde exatamente fica essa configuração? Estamos na versão estável (que realmente deveria ter essa opção, em teoria) e não consigo encontrá-la de jeito nenhum.
Editar: Nosso outro administrador a encontrou - é “registrar visualizações de mensagens pessoais” na aba “Usuários”. Eu argumentaria que deveria ser algo da aba de Segurança, mas posso ver por que estaria lá se pensar um pouco.
Pergunta de acompanhamento - é possível habilitar o registro quando um administrador visualizou as mensagens de uma conta, mesmo que ele não tenha aberto uma mensagem para ler seu conteúdo?
No contexto do nosso fórum, seria possível para os administradores abusarem de seu poder ao simplesmente ver os detalhes de certas MPs das quais um usuário pode fazer parte - ler o conteúdo não é necessariamente mais prejudicial do que saber o nome e quais usuários têm acesso, o que atualmente não é registrado, apesar de essa configuração estar habilitada. Idealmente, gostaríamos de corrigir isso e também registrar sempre que um administrador visualizar as mensagens das quais um usuário faz parte, em vez de apenas quando ele visualiza o conteúdo de uma mensagem específica.
A melhor maneira de fazer isso é com criptografia de ponta a ponta, possibilitada pelo nosso plugin discourse-encrypt.
Os administradores são os administradores do fórum e têm acesso a todos os dados. Existem muitas maneiras para os administradores visualizarem o conteúdo das mensagens sem que isso seja registrado:
baixar um backup
explorador de dados
personificação
criar chaves de API
Para proteger totalmente os usuários, a melhor solução é usar mensagens criptografadas. Se você não confia em seus administradores, eles não deveriam ser administradores.
Meu entendimento é que a maioria dessas coisas são registráveis, o que é tudo o que realmente precisamos - para ser honesto, não tenho certeza se confio em mim mesmo para não acabar olhando a página de mensagens de um usuário por acidente e simplesmente seguir em frente como se nada tivesse acontecido, o que em nosso caso poderia ser prejudicial (em particular, não esperamos que seja um risco de segurança, mas um risco de integridade - ou seja, danos a longo prazo não são feitos, desde que o usuário que obteve acesso a esse conhecimento seja aberto sobre isso e se abstenha de tópicos relevantes).\n\nCertamente tornaria muito mais fácil garantir que ninguém faça isso por acidente ou de propósito sem depois relatar, se fosse registrado com todas as outras maneiras pelas quais eles poderiam acessar os mesmos dados.\n\nSe essas coisas que você listou não forem registráveis, então deveriam ser, mas mesmo assim, isso só ajudaria contra um administrador malicioso e não contra um ligeiramente descuidado.
Como seria possível fazer isso sem obscurecer também as suas listas de mensagens? Pelo que sei, não há um “slug” com o nome de usuário da conta que você está visualizando que possa ser usado para afetar apenas as páginas de mensagens que não são suas com CSS.
Meu principal problema é que meu script parece buscar os dados antes que eles sejam atualizados - ou seja, posso ler os metadados em uma alteração de página, mas ele é atualizado antes que os dados da página sejam atualizados.
<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>
Basicamente, meu --currUsername é atualizado, então a meta tag é atualizada com a nova URL, então meu --currUsername está sempre uma página atrás do que eu estou realmente olhando. Isso ocorre independentemente de eu ter ou não a linha “window.onload”.
Alguma ideia do que estou fazendo de errado aqui?
O objetivo final é basicamente adicionar uma classe ao corpo com base na página que você está olhando e, em seguida, estilizar com base nisso - isso permitiria ler, por exemplo, esse campo de título em vez do campo og:url, e então adicionar uma classe “myMessages” ao corpo para obter o efeito desejado neste caso. Em teoria.