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.
- ...