Vous n'avez pas besoin de signer votre applet pour que cela fonctionne?
La signature d'un applet
La façon de permettre à une applet de faire toutes ces choses est de signer numériquement. En effet le signataire dit "Cette applet est sûre à utiliser, et si vous me faites confiance, vous pouvez faire confiance à cette applet, car grâce à ma signature, vous pouvez être assuré qu'elle n'a pas été falsifiée depuis que je l'ai signée." On demandera ensuite à l'utilisateur si elle veut faire confiance au signataire (habituellement dans une petite boîte de dialogue), et si c'est le cas, l'applet peut continuer avec tous les privilèges. Si l'approbation est refusée, l'applet continue de s'exécuter dans le bac à sable avec des privilèges limités. La décision de faire confiance à une applet devrait être prise très judicieusement, car une applet de confiance a les mêmes privilèges qu'une application démarrée localement: Elle peut lire et supprimer des fichiers, et transmettre des données sur le réseau.
Une explication plus complète du modèle de sécurité de l'applet peut être trouvée ici. Cela inclut une liste complète des restrictions d'applet.
Pour une introduction à la signature d'applet et des liens vers plus d'informations, lisez ceci et surtout ceci. Internet Explorer (et la machine virtuelle Java MS) sont un peu non standard; lisez ceci pour avoir un aperçu de ce qu'il faut faire.
Si, même après la signature de l'applet, vous obtenez toujours un SecurityException, essayez d'exécuter le code comme privilégié:
AccessController.doPrivileged (new PrivilegedAction() { public Exécuter l'objet() { // exécuter l'opération sensible à la sécurité ici return null; } });
JavaDoc: java.security.AccessController
fichiers Politique
Une autre façon d'accorder une applet capacités supplémentaires est l'utilisation des fichiers de politiques, dont Sun a un article d'introduction, et un autre ici spécifiquement pour les applets. En utilisant des politiques, il est possible de contrôler de façon plus fine quels privilèges accorder une applet. Par exemple, il devient possible d'accorder aux applets l'accès au système de fichiers local, mais pas aux autres capacités qui leur sont refusées. Voici un exemple de cela. L'inconvénient de l'utilisation de fichiers de règles réside dans le fait qu'ils résident sur le système de fichiers local. Les utilisateurs doivent donc apporter des modifications à un fichier qui est normalement hors de leur vue et dont le contenu n'est pas trivial à comprendre.
L'exemple suivant montre comment annuler la plupart des restrictions d'applets. L'une quelconque des autorisations peut être rendue plus spécifique, par ex. FilePermission peut être donné pour seulement les fichiers sélectionnés, et avec un accès en lecture seule. Les javadocs de chaque classe d'autorisation expliquent en détail ce qui est possible. C'est une bonne pratique d'utiliser le réglage le plus restreint possible. RuntimePermission en particulier peut être utilisé pour créer ClassLoaders et SecurityManagers, qui peuvent contourner encore plus de restrictions d'applet.
grant codeBase "http://geosim.cs.vt.edu/geosim/-" {
permission java.io.FilePermission "<<ALL FILES>>", "read, write, execute, delete";
permission java.net.SocketPermission "*", "accept, connect, listen, resolve";
permission java.util.PropertyPermission "*", "read, write";
permission java.lang.RuntimePermission "*";
permission java.awt.AWTPermission "showWindowWithoutWarningBanner";
};
Javadocs
JavaDoc: java.awt.AWTPermission JavaDoc: java.io.FilePermission JavaDoc: java.lang.RuntimePermission JavaDoc: java.net.SocketPermission JavaDoc: java.util. PropertyPermission
Son Java 1.6u13 (entre autres). Mais, comme état, c'est dans les navigateurs Opera et Safari sur Windows, qui ont tous deux leur propre plugin Java. – jsight
La boîte de dialogue modale ne fonctionne pas, car ce ne sont pas vraiment des boîtes de dialogue. Ils ont juste besoin de bloquer le code appelant (qui est sur l'EDT) jusqu'à ce que la boîte de dialogue soit fermée. Nous pourrions le réécrire avec une approche différente, mais préférerions rester dans l'approche modale au lieu de réécrire des choses pour deux navigateurs bizarres. – jsight
IIRC, Opera utilise le plugin "Firefox 2", qui devrait se comporter de la même façon. Ils devraient vraiment continuer avec la nouvelle interface de plugin Firefox 3/Chrome. Vous pouvez ouvrir une boîte de dialogue sans décoration hors écran. C'est ce que font les dialogues de sécurité de WebStart et PlugIn (bien que, IIRC, ils laissent la décoration, ce qui n'est pas si brillant). –