Política de segurança Java

A máquina virtual Java opera com o carregamento dinâmico de classes, ou seja, bytecodes são carregados pela máquina virtual Java à medida que são solicitados pela aplicação.

Em uma aplicação operando localmente, o carregador de classes da máquina virtual procura por essas classes nos (sub-)diretórios especificados a partir da variável do sistema CLASSPATH. Se encontrada, a classe é carregada para a máquina virtual e a operação continua. Caso contrário, a exceção ClassNotFoundException é gerada.

O carregamento do código de uma classe para a máquina virtual Java é realizado pelo class loader, que em si é uma classe Java que provê essa funcionalidade. O class loader deve obedecer a uma política de segurança estabelecida para aquela máquina virtual. O estabelecimento de uma política de segurança deve obedecer a um modelo de segurança específico. Um modelo padrão é utilizado, mas alternativas podem ser criadas.

Para enforçar essas políticas alternativas de segurança, um SecurityManager deve ser criado. Applets, por default, utilizam um SecurityManager estabelecido pelo navegador em cujo contexto estão executando. Outras aplicações devem criar explicitamente esse objeto. Por exemplo, para criar um SecurityManager padrão para RMI, a seguinte linha de código deveria ser incluída antes de executar qualquer operação envolvendo classes remotas:

    System.setSecurityManager(new RMISecurityManager());

Se o cliente RMI estiver em um applet, então não é necessário criar um SecurityManager, uma vez que o próprio navegador estabelece a política de segurança para applets.


© Ivan Luiz Marques Ricarte
DCA/FEEC/UNICAMP

Last modified: Fri Jun 30 10:26:11 EST 2000