Java - Créer une applet qui accède au disque dur

Décembre 2016

Habituellement, le système de sécurité des applets Java interdit totalement aux applets d'accéder aux ressources de la machine (disque dur, base de registre, etc.) ainsi qu'au réseau (l'applet ne peut communiquer qu'avec son serveur d'origine.)


Si vous voulez créer une applet qui outrepasse ces sécurités, il est nécessire:

- de créer une applet signée cryptographiquement
et
- que l'internaute autorise explicitement l'applet à accéder au système
(C'est une action volontaire de l'internaute qui ne peut être outrepassée.)



Une fois ces deux conditions réunies, vous pourrez lire/écrire sur le disque dur, lancer des programmes (Runtime.getRuntime().exec("...")), aller télécharger des choses (urlconnection) ou utiliser la commande eval().

Instructions


1) Compilez votre applet


comme d'habitude (créez un fichier .jar).

2) Générez votre clé


Votre clé cryptographique vous servira à signer toutes vos applets.

Tapez: keytool -genkey -alias votreNomdAlias
et entrez les informations nécessaires. N'oubliez pas le mot de passe que vous avez entré pour protéger cette clé.

Vous n'avez besoin de générer votre clé qu'une seule fois. Une fois votre clé créée, vous pouvez vous en servir pour signer autant d'applet que vous voulez.
(Notez que votre clé peut optionnellement avoir une date d'expiration.)

Note: Sous Windows, la clé est placée dans le profil utilisateur.
(\Documents and Settings\votrelogin\.keystore...)

Vous devez protéger à tout prix ce fichier de clés.
(Si vous vous le faites voler, quelqu'un pourra créer des applets malveillantes signées par vous !)

3) Signez votre applet avec votre clé


Tapez: jarsigner -verbose monapplet.jar votreNomdAlias

Entrez le mot de passe de votre clé.

Voilà, votre applet est signée.

4) Testez votre applet


Placez votre applet sur le serveur (c'est important), et testez la.

Vous verrez une fenêtre d'avertissemement pour la sécurité qui demande à l'internaute s'il autorise cette applet.

Exemple:

(Cette popup est générée par l'applet présente dans cette page )




Note: Le message de la popup signalant que la signature cryptographique est invalide est en réalité faux:
L'applet possède bien une signature cryptographique (la vôtre), mais cette signature n'a pas été validée par une autorité de certification (Thawte, VeriSign, etc.)

Or cette validation tierce (PKI) est payante.

Mais techniquement, elle n'est pas absolument pas nécessaire et ne réduit en rien la sécurité de fonctionnement de votre applet.

C'est juste que le fait de donner de l'argent à quelques PKI (dont les clés sont installées par défaut dans les navigateurs) vous permettra de vous débarasser de ce warning.

A vous de voir si payer pour ça en vaut le coup ou non.

A voir également :

Ce document intitulé «  Java - Créer une applet qui accède au disque dur  » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.