Java Security Manager

Sans le Security Manager le code suivant est exécuté sans exception.

/* Aucune erreur le fichier est créé */
try {
   new File(PATH + "file.txt").createNewFile();
} catch (Exception ex) {
   ex.printStackTrace();
}

Le fichier est bien créé.

Si on créé le Security Manager et que l'on tente de créer un fichier, le programme lèvera une exception de type Access denied

/* création d'un nouveau SecurityManager */
System.setSecurityManager(new SecurityManager());

/* Exception de type access denied */
try {
   new File(PATH + "file.txt").createNewFile();
} catch (Exception ex) {
   ex.printStackTrace();
}

Pour autoriser le programme à créer des fichiers, il faut créer le fichier .java.policy dans le dossier user.home (dossier utilisateur).

grant codeBase "<CHEMIN_DU_JAR ou DOSSIER_BIN_ECLIPSE>" {
    permission java.io.FilePermission "<CHEMIN>", "write, read, delete, execute, readlink";
};

Par exemple :

grant codeBase "file:C:/Users/Ronan/workspace/securitymanager/bin/*" {
    permission java.io.FilePermission "C:/Users/Ronan/Desktop/*", "write";
};

Dans cet exemple, le programme ne pourra qu'enregistrer des fichiers sur le bureau et il ne pourra ni lire, ni exécuter, ni supprimer des fichiers.

Commentaires