Dado que el título de la pregunta es muy amplia, voy a tirar en otra buena práctica debe tener en cuenta cuando se utilizan las propiedades del sistema. El acceso a las propiedades del sistema puede por negada por el SecurityManager
, por lo que puede necesitar para acceder a ellos a través de un PrivilegedAction
, así:
String tmpdir = AccessController.doPrivileged(new PrivilegedAction<String>() {
public String run() {
return System.getProperty("java.io.tmpdir");
}
});
utilizar una acción privilegiada cuando el código restringe una acción sensible, por lo que será seguro, incluso si código malicioso lo invoca.
Por ejemplo, no sería seguro utilizar una acción privilegiada en un método como OutputStream open(File file)
. El código no confiable podría invocarlo, y usar los privilegios de su código para escribir cualquier cosa, en cualquier lugar.
Sin embargo, si tiene un método que guarda las preferencias del usuario para su aplicación en un archivo que elija, probablemente sea seguro. Un llamador malicioso no puede elegir la ubicación del archivo o su contenido; ésos son especificados por tu código.Por lo tanto, su método puede usar una acción privilegiada para permitir que sea invocado por un código sin privilegios.
Pero, ¿dónde harías eso? ¿Hace algún tipo de interfaz solo constantes en alguna parte solo para las propiedades del sistema? Nunca he sido un gran fan de ellos realmente. ¿Alguna sugerencia? – willcodejavaforfood
Agregué un par de sugerencias diferentes, pero creo que para cadenas constantes en muchas clases diferentes, la interfaz que describes es la mejor. –
Bastante justo. Pregunta Daft realmente :) – willcodejavaforfood