Non esiste una semplice risposta sì/no alla domanda, perché dipende in realtà: cosa si desidera proteggere e da che cosa si desidera proteggere?
Ad esempio, ho utilizzato SecurityManager per implementare il filtro IP e consentire solo agli indirizzi IP autorizzati di connettersi alla mia applicazione. Se si desidera disabilitare l'accesso ai file su disco, è possibile che l'esecuzione dell'applicazione come utente con privilegi minori sia la soluzione migliore.
Se non ti fidi affatto dei plug-in di terze parti, ricorda che una volta autorizzata l'esecuzione del codice del plug-in, tale plug-in può mandare in crash l'applicazione se lo desidera anche se usi SecurityManager. Se la tua applicazione carica plugin, forse il plugin di whitelisting e controlla la lista prima di caricare plugin è la soluzione migliore.
Se si decide di utilizzarlo, si verificherà un calo di prestazioni (dal momento che JVM eseguirà più controlli), ma la velocità con cui verrà eseguito dipenderà dal codice/configurazione che eseguirà i controlli. La mia whitelist IP era piuttosto veloce poiché includeva solo la ricerca di una singola lista; se i tuoi controlli includono il richiamo del servizio web remoto e l'accesso al database, puoi rallentare molto le cose, ma d'altra parte, anche questo non dovrebbe importare se hai abbastanza hardware e pochi utenti concorrenti (in altre parole, se puoi permettertelo) .
Nel nostro caso il codice di terze parti sono varie librerie OS conosciute. È piuttosto necessario revisionare ogni riga di codice per verificare se esiste un potenziale codice "cattivo". Mi fido di queste librerie, ma il nostro cliente è un po 'paranoico :) – Kaitsu
Devi stare attento prima di dire che non stai eseguendo il codice di qualcun altro. Ad esempio, gli attacchi XEE (XML External Entity) possono essere utilizzati se si analizza l'XML, ma la maggior parte delle persone direbbe che sono "solo dati". – bgiles