Utilisation de JFileChooser dans JApplet
-
04-07-2019 - |
Question
Un JApplet
peut-il utiliser un JFileChooser
afin que l'utilisateur puisse sélectionner un fichier sur son disque dur? Ou est-ce que cela violerait la sécurité de l'applet Java? (Je suppose que les paramètres de sécurité par défaut sont utilisés. Je ne souhaite pas demander à mes utilisateurs de m'accorder des autorisations supplémentaires.)
La solution
Ce fil indique que vous devez signer numériquement votre applet. avant qu'un JFileChooser
ne soit autorisé.
Autres conseils
Comme indiqué précédemment, vous devez signer votre applet, ce qui entraîne un "avertissement de sécurité vague". lorsque l'utilisateur est présenté l'applet. Lorsque l'utilisateur accepte d'exécuter cette applet, celle-ci bénéficie d'un accès complet et fonctionne comme une application ordinaire avec des implications évidentes en matière de sécurité. Je suis dans le même dilemme en ce qui concerne une application Web sur laquelle je travaille et je ne sais pas encore si elle sera déployée.
Vous pouvez également utiliser le navigateur de fichiers intégré dans le navigateur Web et renvoyer le contenu du fichier de votre serveur si vous travaillez avec des fichiers plus petits.
Vous pouvez également prendre certaines mesures de sécurité concernant un applet signé:
-
Validation de l'origine du code de l'applet.
URL appletUrl = MyApplet.class.getProtectionDomain().getCodeSource().getLocation(); if(appletUrl.toString().equalsIgnoreCase(safeAppletUrl) == false) return false;
-
Vérification de l'URL de base à partir de laquelle l'applet a été exécutée.
URL documentUrl = this.getDocumentBase(); if(documentUrl.toString().equalsIgnoreCase(safeDocumentUrl) == false) return false;
Dans ce cas d'utilisation des paramètres par défaut, le gestionnaire de sécurité par défaut n'autorise pas l'accès aux fichiers locaux.
Vous devrez probablement utiliser PrivilegedAction pour lire quoi que ce soit sur le disque dur de l'utilisateur. Tout comme @mmyers a dit que vous deviez signer votre applet également.
Donc, votre réponse est oui, je l'ai déjà fait, alors je sais que cela peut être fait.