Les applets et la sécurité
Toute application Java implante sa propre sécurité à l'aide d'un objet chargé une et une seule fois au début du lancement de l'application : un objet d'une sous classe de la classe SecurityManager.
C'est le cas des browsers.
Cet objet est unique à l'intérieur d'une application Java, ne peut pas être remplacé. Les applets ne peuvent pas le référencer.
bibliographie : http://www.javasoft.com/sfaq/index.html
De ce fait la plupart des browsers (Netscape Navigator, Internet Explorer, ...) implante une politique sécurisé très draconienne (le browser le plus souple est hotjava).
Les applets et la sécurité (les acl)
Parfois cette politique est liée à des valeurs de propriétés écrites dans un fichier local (exemple ~/.hotjava/properties pour hotjava).
Ces valeurs sont des listes de permission pour une certaine action (acl = access control list)
NN: Netscape Navigator 2.x, loading applets over the Net
NL: Netscape Navigator 2.x, loading applets from the Local file system
AN: Appletviewer, JDK 1.x, loading applets over the Net
AL: Appletviewer, JDK 1.x, loading applets from the Local file system
JS: Java Standalone applications
NN | NL | AN | AL | JS | |
read file in /home/me, acl.read=null |
no | no | no | yes | yes |
read file in /home/me, acl.read=/home/me |
no | no | yes | yes | yes |
write file in /tmp, acl.write=null |
no | no | no | yes | yes |
write file in /tmp, acl.write=/tmp |
no | no | yes | yes | yes |
get file info, acl.write=null |
no | no | no | yes | yes |
get file info, acl.read=/home/me acl.write=/tmp |
no | no | yes | yes | yes |
delete file, using File.delete() |
no | no | no | no | yes |
delete file, using exec /usr/bin/rm |
no | no | no | yes | yes |
read the user.name property | no | yes | no | yes | yes |
connect to port on client | no | yes | no | yes | yes |
connect to port on 3rd host | no | yes | no | yes | yes |
load library | no | yes | no | yes | yes |
exit(-1) | no | no | no | yes | yes |
create a popup window without a warning |
no | yes | no | yes | yes |
source : http://www.javasoft.com/sfaq/index.html#summary
Les applets et la sécurité : conclusion
En règle générale on peut retenir
(même si en fait c'est beaucoup plus "fin" cf. ci dessus)
qu'a priori les applets Java (du à l'implantation de la politique
de sécurité des browsers) ne peuvent pas :
- lire ou écrire dans des fichiers locaux
- détruire des fichiers locaux (soit en se servant de File.delete()
soit en lançant une commande système rm ou del)
- renommer des fichiers locaux (soit en se servant de File.renameTo() soit
en lançant une commande système mv ou rename)
- créer un répertoire sur le système local (soit en
se servant de File.mkdir() soit ou File.mkdirs() en lançant une
commande système mkdir)
- lister le contenu d'un répertoire local.
- vérifier l'existence, la taille, le type, la date de dernière
modification d'un fichier local
- charger des librairies ou des méthodes natives.
- ...