Saltar la navegación

3.2.- Asegurando las aplicaciones (I).

Como hemos comentado anteriormente, en las aplicaciones que se ejecutan localmente, el Security Manager se encuentra deshabilitado. A continuación, vamos a ver cómo aplicar las políticas de seguridad a las aplicaciones para poder controlar los recursos a los que pueden acceder.

Para comprobar que, por defecto, una aplicación local se ejecuta "libremente", vamos a descargar la siguiente aplicación que obtiene y muestra las propiedades del sistema y de java.

Descargar código fuente GetProps.java

GetProps.java

// Download from 
http://docs.oracle.com/javase/tutorial/security/tour2/examples/GetProps.java

import java.lang.*;
import java.security.*;
 
class GetProps {
 
    public static void main(String[] args) { 
        /* Test reading properties w & w/out security manager */         
        String s;
 
        try {
            System.out.println("About to get os.name property value");
 
            s = System.getProperty("os.name", "not specified");
            System.out.println("  The name of your operating system is: " + s);
 
            System.out.println("About to get java.version property value");
 
            s = System.getProperty("java.version", "not specified");
            System.out.println("  The version of the JVM you are running is: " + s);
 
            System.out.println("About to get user.home property value");
 
            s = System.getProperty("user.home", "not specified");
            System.out.println("  Your user home directory is: " + s);
 
            System.out.println("About to get java.home property value");
 
            s = System.getProperty("java.home", "not specified");
            System.out.println("  Your JRE installation directory is: " + s);
 
         } catch (Exception e) {
            System.err.println("Caught exception " + e.toString());
        } 
    }
}

Compila y ejecuta el código:

javac GetProps.java
java GetProps

Captura de pantalla que muestra el resultado de la ejecución del programa GetProps.

Como puedes ver en la figura anterior, la aplicación tiene acceso a las propiedades del sistema.


Para poder aplicar las políticas de seguridad, en una aplicación local, debemos activar el Security Manager utilizando la opción –Djava.security.manager, por lo que ejecutaremos:

java –Djava.security.manager GetProps 
Captura de pantalla que muestra el resultado de la ejecución de java –Djata.security.manager GetProps.

Las políticas de seguridad que se cargan por defecto, permiten al código a acceder a datos que no son sensibles y no son un riesgo de seguridad como la versión del sistema operativo (os.name) y la versión de java (java.version). En cambio, en los datos más sensibles como el directorio home del usuario (user.home) o el directorio de trabajo de java (java.home) el gestor de seguridad no permite el acceso de lectura y por eso se produce la excepción de que no tiene permisos (AccessControlException).

Tal y como podemos ver en la siguiente figura, se ha denegado el acceso a ("java.util.PropertyPermission" "user.home" "read"). Estos datos son necesarios para poder establecer correctamente las políticas de acceso.