Decidir los Métodos a Sobreescribir del SecurityManager

Podrías tener que sobreescribir varios métodos checkXXX() del SecurityManager dependiendo de las operaciones a las que quieras que el controlador de seguridad les imponga restrcciones.

La primera columna de la siguiente tabla son objetos sobre los que se pueden realizar varias operaciones. La segunda columna lista los métodos de SecurityManager que aprueban las operaciones de los objetos de la primera columna.

Operaciones sobre Aprovadas por
sockets checkAccept(String host, int port)
checkConnect(String host, int port)
checkConnect(String host, int port, Object executionContext)
checkListen(int port)
threads checkAccess(Thread thread)
checkAccess(ThreadGroup threadgroup)
class loader checkCreateClassLoader()
sistema de ficheros checkDelete(String filename)
checkLink(String library)
checkRead(FileDescriptor filedescriptor)
checkRead(String filename)
checkRead(String filename, Object executionContext)
checkWrite(FileDescriptor filedescriptor)
checkWrite(String filename)
comandos del sistema checkExec(String command)
interprete checkExit(int status)
paquete checkPackageAccess(String packageName)
checkPackageDefinition(String packageName)
propiedades checkPropertiesAccess()
checkPropertyAccess(String key)
checkPropertyAccess(String key, String def)
networking checkSetFactory()
windows checkTopLevelWindow(Object window)

Dependiendo de tu política de seguridad, puedes sobreescribir algunos o todos estos métodos. Por ejemplo, supon que estás escribiendo un Navegador Web o un visualizador de applets y quieres evitar que los applets utilicen sockets. Puedes hacer esto sobreescribiendo los cuatro métodos que afectan al acceso a los sockets.

Muchos de los métodos checkXXX() son llamados en múltiples situaciones. Ya viste esto cuando escribimos el PasswordSecurityManager en Escribir un Controlador de Seguridad -- el método checkAccess(ThreadGroup g) es llamado cuando se crea un ThreadGroup, selecciona su estado de servicio, lo para, etc. Cuando sobreescribas un método checkXXX() asegurate de que comprendes todas las situaciones en las que puede ser llamado.

La implementación por defecto suministrada por la clase SecurityManager para todos los métodos checkXXX() es:

public void checkXXX(. . .) {
    throw new SecurityException();
}
La mayoría de las veces querráa que haga algo más selectivo que prohibirlo todo! Por eso podrías encontrar que debes sobresscribir todos los métodos checkXXX() de SecurityManager.


Ozito