Uso de getPermissions()

RECU-0603 (Recurso Ejemplo)

Descripción

Al escribir un cargador de clases personalizadas, a veces es conveniente reemplazar el método getPermissions(). En la mayoría de los casos se recomienda consultar la política por defecto de la aplicación antes de asignar permisos arbitrarios en el código fuente.

Esto puede controlarse de forma automática al invocar explícitamente el método getPermissions() de la superclase.

Ejemplos

El siguiente ejemplo de código no cumple lo recomendado. Muestra un fragmento de un cargador de clases personalizadas que extiende la clase URLClassLoader. Se reemplaza el método getPermissions () y no requiere el método getPermissions más restrictivo de la superclase. Tenga en cuenta que el método getPermissions() de la clase URLClassLoader llama al método getPermissions() de la clase Policy de forma que, por defecto, usa la política global de todo el sistema de archivos para aplicar al control de acceso.

En consecuencia, una clase definida usando el cargador de clases personalizadas tiene permisos que son completamente independientes de los especificados en el archivo de política en todo el sistema y, en efecto, los permisos de la clase son sobrescritos.

protected PermissionCollection getPermissions(CodeSource cs) {
  PermissionCollection pc = new Permissions();
  pc.add(new RuntimePermission("exitVM"));   //allow exit from the VM anytime
  return pc;
}

La manera recomendada sería la del ejemplo siguiente, donde el método que reemplaza getPermissions() llama a super.getPermissions() y, por tanto, se consulta la directiva de seguridad predeterminada para todo el sistema además de la directiva personalizada.

protected PermissionCollection getPermissions(CodeSource cs) {
  PermissionCollection pc = super.getPermissions(cs);
  pc.add(new RuntimePermission("exitVM"));
  return pc;
}

Contenidos relacionados

Pautas
Área: Desarrollo » Seguridad » Control de Acceso y Autenticación
Código Título Tipo Carácter
LIBP-0254 Control de acceso Libro de pautas Directriz Obligatoria