Ho un dibattito su come registrare correttamente gli errori per la parte client (Java Swing) di un'applicazione client-server dal punto di vista della sicurezza.
Penso sia logico che l'esposizione di dettagli di errore come eccezioni e stacktraces a utenti "non fidati" sia una cattiva pratica e almeno possa indebolire la sicurezza dell'applicazione attraverso la divulgazione di informazioni (struttura interna, dipendenze, ecc.).
La soluzione sul lato server può essere risolta assicurandosi di non esporre dettagli sugli errori agli utenti e di memorizzare i dettagli in modo sicuro sul server. In questo modo i dettagli dell'errore possono essere consultati più tardi da persone dedicate durante un'indagine quando necessario.
Ma come si può realizzare per memorizzare i dettagli dell'errore sul client senza esporlo all'utente?
Mi sono venute in mente alcune cose, ma ognuna è difettosa in determinati punti.
- Invio dei dettagli di errore a un server dedicato in cui sono memorizzati per una ricerca successiva.
- Come inviare i dettagli dell'errore per problemi nel livello di comunicazione (non è possibile alcuna comunicazione esterna)?
- Il server di log non è accessibile dalla rete del client (regole firewall, proxy, ecc.).
- Dettagli dell'errore di crittografia asimmetrica
- Potenziale impatto sulle prestazioni durante la registrazione.
- I dettagli dell'errore devono essere decrittografati durante l'analisi degli errori, il che rende il processo più ingombrante.
D'altro canto, puoi argomentare che l'esposizione dei dettagli di errore da un'applicazione client non è così importante come per i dettagli di errore di un'applicazione server.
- Gli utenti hanno già accesso al client binario che può essere utilizzato per raccogliere informazioni interne (reverse engineering).
- La maggior parte dei dettagli di comunicazione può essere raccolta sniffando il traffico tra client e server.
- La conoscenza interna di un'applicazione client è (nella maggior parte dei casi) non valida quanto sul server, poiché il client agisce principalmente come un'interfaccia utente e la logica aziendale essenziale risiede sul server.
Quali sono le "migliori pratiche" oi migliori compromessi per memorizzare i dettagli degli errori sul client da un punto di vista della sicurezza? O per dirla in modo diverso, vale la pena nascondere i dettagli dell'errore (eccezioni, stacktraces, ecc.) Per un'applicazione client?