I PM sono accessibili agli amministratori se l'amministratore ha il link

Ho appena scoperto che se qualcuno invia un messaggio privato (PM) a un’altra persona. Diciamo dall’account joe a jane, e per qualche motivo qualcuno (connesso) scopre il corretto “topic ID”, può leggere il PM.

So che è un caso limite e piuttosto difficile da individuare, ma automatizzando un qualche tipo di scraper che cicla attraverso tutti gli ID dei topic, chiunque potrebbe leggere tutti i PM.

L’ho scoperto perché un utente ha risposto all’email di notifica e sono stato in grado di cliccare sul link e leggere il PM in questione.

Presumo che tu sia un membro dello staff del forum? Dovresti poter fare questo solo se fai parte dello staff. Lo staff dovrebbe avere di default la possibilità di controllare i messaggi privati, mentre gli amministratori e chi ha accesso al database avrebbero comunque accesso ai messaggi grezzi.

Se hai bisogno di fornire un sistema davvero privato, esiste il plugin discourse-encrypt che offre la crittografia end-to-end dei messaggi.

9 Mi Piace

Non è una necessità, ho solo avuto un pensiero su quello.

Testerò con un account normale e aggiornerò questo, nel caso.

1 Mi Piace

Questo vale solo per gli amministratori, non per i moderatori, quindi sto correggendo il tuo titolo che è errato. Anche i moderatori hanno accesso ai messaggi privati solo quando questi vengono segnalati.

Se questo è un problema, degrada te stesso a moderatore (accedendo con un account diverso per testare) oppure attiva nei impostazioni del sito il registro delle visite ai messaggi privati da parte degli amministratori.

5 Mi Piace

Domanda potenzialmente stupida: dov’è esattamente questa impostazione? Siamo sulla versione stabile (che in teoria dovrebbe avere questo interruttore) e non riesco a trovarla per niente.

Modifica: Il nostro altro amministratore l’ha trovata: è “log personal messages views” nella scheda “Users”. Sostengo che dovrebbe essere una cosa della scheda Sicurezza, ma posso capire perché sia lì se ci penso un minuto.

2 Mi Piace

Domanda di follow-up: è possibile abilitare il logging quando un amministratore ha visualizzato i messaggi di un account, anche se non ha aperto un messaggio per leggerne il contenuto?

Nel contesto del nostro forum, sarebbe possibile per gli amministratori abusare del loro potere semplicemente vedendo i dettagli di alcuni PM a cui un utente potrebbe far parte - leggere i contenuti non è necessariamente più dannoso che conoscere il nome e quali utenti hanno accesso, cosa che attualmente non viene registrata nonostante l’impostazione sia abilitata. Idealmente, vorremmo risolvere questo problema, e anche registrare ogni volta che un amministratore visualizza i messaggi di cui un utente fa parte, piuttosto che solo quando visualizza il contenuto di un messaggio specifico.

1 Mi Piace

Il modo migliore per farlo è con la crittografia end-to-end, resa possibile dal nostro plugin discourse-encrypt.

Gli amministratori sono administrator del forum e hanno accesso a tutti i dati. Ci sono molti modi per gli amministratori di visualizzare il contenuto dei messaggi senza che venga registrato:

  • scaricare un backup
  • data explorer
  • impersonificazione
  • creazione di chiavi API

Per proteggere completamente gli utenti, la soluzione migliore è utilizzare la messaggistica crittografata. Se non ti fidi dei tuoi amministratori, non dovrebbero essere amministratori.

5 Mi Piace

La mia comprensione è che la maggior parte di quelle cose siano registrabili, che è tutto ciò di cui abbiamo veramente bisogno - ad essere onesti, non sono sicuro di potermi fidare di me stesso a non finire per guardare la pagina dei messaggi di un utente per sbaglio e poi andare avanti come se nulla fosse successo, il che nel nostro caso potrebbe essere dannoso (in particolare, non ci aspettiamo che sia un rischio per la sicurezza, ma un rischio per l’integrità - cioè, non vengono causati danni a lungo termine finché l’utente che ha ottenuto l’accesso a questa conoscenza ne è aperto e si astiene da argomenti pertinenti).\n\nCertamente renderebbe molto più facile garantire che nessuno lo faccia per sbaglio o di proposito senza poi segnalarlo, se fosse registrato con tutti gli altri modi in cui potrebbero accedere agli stessi dati.\n\nSe quelle cose che hai elencato non sono registrabili, allora dovrebbero esserlo, ma anche in quel caso aiuterebbe solo contro un amministratore malintenzionato e non contro uno leggermente negligente.

1 Mi Piace

Puoi nascondere/oscurare i titoli dei messaggi negli elenchi dei messaggi di altri utenti utilizzando il tema del tuo sito.

Se è di proposito, è un’altra questione.

Altri posti dove potresti ottenere queste informazioni di audit: i log del server web.

Sono sicuro che un plugin per registrare queste informazioni non sarebbe difficile, ma non sono sicuro che dovrebbe essere nella nostra roadmap interna.

2 Mi Piace

Come sarebbe possibile farlo senza oscurare anche i propri elenchi di messaggi? Per quanto ne so, non esiste uno slug con il nome utente dell’account che stai visualizzando che potresti usare per influenzare solo le pagine dei messaggi che non sono le tue con CSS.

1 Mi Piace

Potresti essere in grado di utilizzare un selettore sul titolo di quella pagina: “Messaggi” è il tuo, mentre “Nome utente — Messaggi” è di qualcun altro.

2 Mi Piace

Il mio problema principale è che il mio script sembra recuperare i dati prima che vengano aggiornati, cioè posso leggere i metadati al cambio di pagina, ma si aggiorna prima che i dati della pagina vengano aggiornati.

<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>

In pratica, il mio --currUsername viene aggiornato, poi il tag meta viene aggiornato con il nuovo URL, quindi il mio --currUsername è sempre una pagina indietro rispetto a quello che sto effettivamente guardando. Questo accade indipendentemente dal fatto che abbia o meno la riga “window.onload”.

Hai qualche idea su cosa sto sbagliando qui?

L’obiettivo finale è praticamente aggiungere una classe al body in base alla pagina che stai guardando, e poi stilizzare in base a quella. Dovrebbe permetterci di leggere, ad esempio, quel campo titolo invece del campo og:url, e poi aggiungere una classe “myMessages” al body per ottenere l’effetto desiderato in questo caso. In teoria.

1 Mi Piace

Questo è incredibilmente grezzo, ma quanto segue sembra funzionare forzando la funzione JavaScript a ritardare di un ventesimo di secondo:


    api.onPageChange(() => {
        window.onload = determineUser();
    });
    
    async function determineUser() {
        await sleep(50);
        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);
        }
    }
    
    function sleep(ms)
    {
        return new Promise(resolve => setTimeout(resolve, ms));
    }

Vedrò se riesco a farlo funzionare come previsto.

2 Mi Piace