Applet contourner le SecurityManager

Description

Ce tutoriel explique comment écrire des certificats pour les Java Applet afin de contourner le SecurityManager. Avec des certificats, il est possible d'écrire sur le disque dur d'un utilisateur et d'exécuter votre code comme si c'était une application.

Introduction

« Un des buts de la conception Java est de créer des applets, qui sont des petits programmes s'exécutant à l'intérieur d'un browser Web. Parce qu'ils doivent être sûrs, les applets sont limitées dans ce qu'ils peuvent accomplir. Toutefois, les applets sont un outil puissant de programmation côté client, un problème majeur pour le Web.»

Désavantages principaux d'une Java Applet:
- Une Applet ne peut pas lire ou écrire sur le disque de l'utilisateur
- Possibilités très limitées

Avantages principaux d'une Java Applet:
- Le code est extrêmement sécure pour le client, même trop sécure au point de devenir pénible à écrire pour le programmeur
- Aucune installation n'est nécessaire

Comment intégrer une Applet sur le Web?

<html>
<body>
 <applet code="Applet.class" archive="Archive.jar"
           width=325 height=325>
 </applet>
 </body>
</html>

Pour plus de détails: http://www.htmlgoodies.com/beyond/java/article.php/3470731

Qu'est-ce qu'un certificat?

«Les certificats sont des petits fichiers divisés en deux parties :

  • La partie contenant les informations
  • La partie contenant la signature de l'autorité de certification

L'ensemble de ces informations (informations + clé publique du demandeur) est signé par l'autorité de certification, cela signifie qu'une fonction de hachage crée une empreinte de ces informations, puis ce condensé est chiffré à l'aide de la clé privée de l'autorité de certification; la clé publique ayant été préalablement largement diffusée afin de permettre aux utilisateurs de vérifier la signature avec la clé publique de l'autorité de certification.»

Pour plus de détails:
http://www.commentcamarche.net/contents/198-les-certificats
http://fr.wikipedia.org/wiki/Certificat_%C3%A9lectronique

Étapes pour faire une Java Applet certifiée

1) Écrire une classe bidon qui fait un lien vers votre code. Cette classe est l'Applet
Exemple:

import javax.swing.*;
public class Whatever extends JApplet {
        public void init () {
                  new MonProgramme();
        }
}

2) Faire un jar (si nécessaire) pour englober tous vos fichiers
jar cvf nomjar dossierclasses/nomclasses
jar cvf Archive.jar Whatever.class
jar cvf Archive.jar classes Whatever.class (si vous avez un dossier «classes» contenant vos classes)

3) Écrire votre fichier html avec le tag <applet code ... > faisant référence à votre archive et à la classe contenant l'Applet

4) Générer la clé de votre certificat à l'aide de keytool.exe en utilisant la commande
keytool -genkey -alias nomDeVotreCle -validity nbJours
keytool -genkey -alias whatevercle -validity 365

5) Signer votre jar en utilisant jarsigner.exe en utilisant la commande
jarsigner nomJar nomCle
jarsigner Archive.jar whatevercle

6) Admirer la beauté du résultat ;p

Informations à propos de keytool.exe:
keytool est un outil à utiliser via le command-line qui vient avec le SDK. Vous le trouverez dans le dossier bin de votre dossier d'installation Java. Si votre variable path est bien configurée, vous ne devriez avoir aucun problème à l'appeler via le command-line.

Utilisation de keytool.exe:
keytool -genkey -alias nomcle -validity nbJours
keytool -list affiche la liste de toutes les clés
keytool -delete nom cle, mot de passe
keytool -help pour les autres commandes

Informations à propos de jarsigner.exe
jarsigner se situe dans le même dossier que keytool
jarsigner nomArchive nomCle

Conclusion

Bon, je pense que j'ai fait le tour de la question. Je m'excuse si l'introduction était un peu lente, c'est nécessaire puisque tout le monde n'a pas le même «bagage d'informations».

Amusez-vous

Date: 28/05/2006
@author Hassen Ben Tanfous

Ce document intitulé « Applet contourner le SecurityManager » issu de CodeS SourceS (codes-sources.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.
Rejoignez-nous