2008-10-24 16 views
5

Puede un JApplet utilizar un JFileChooser de manera que el usuario puede seleccionar un archivo en su disco duro? ¿O violaría esto la seguridad del applet de Java? (Supongo que se están utilizando las configuraciones de seguridad predeterminadas. No deseo pedirle a mis usuarios que me otorguen permisos adicionales.)JFileChooser dentro JApplet

Respuesta

3

This thread indica que debe firmar digitalmente su applet antes de que se permita JFileChooser.

+0

que enlace está roto. y tampoco wayback ni caché de Google tienen una copia voy a volver aquí si encuentro algo –

+0

Ver aquí: http://narencoolgeek.blogspot.com/2007/11/3-easy-steps-to-self-sign -applet-jar.html –

1

En ese caso (de usar la configuración predeterminada), está en lo correcto, el el administrador de seguridad predeterminado no permite el acceso a archivos locales.

1

Usted probablemente tendrá que utilizar PrivilegedAction para leer cualquier cosa, desde el disco duro del usuario. Así como @mmyers dijo que también deberás firmar tu applet.

Así que su respuesta es sí, he hecho esto antes, así que sé que se puede hacer.

2

Como se ha mencionado, tiene que firmar el applet, que se traducen en una "vaga advertencia de seguridad" cuando el usuario se presenta el applet. Cuando el usuario acepta ejecutar este applet, el applet recibe acceso completo y funciona como una aplicación común con sus implicaciones de seguridad obvias. Estoy en el mismo dilema con respecto a una aplicación web en la que estoy trabajando y aún no estoy seguro si se implementará.

usted podría utilizar alternativamente la incorporada en el explorador de archivos en el navegador web y recuperará el archivo de contenido desde el servidor si está trabajando con archivos más pequeños.

Además, algunas medidas de seguridad que usted puede hacer con respecto a un applet firmado son:

  • Validar el origen del código del applet.

    URL appletUrl = MyApplet.class.getProtectionDomain().getCodeSource().getLocation(); 
    if(appletUrl.toString().equalsIgnoreCase(safeAppletUrl) == false) 
        return false; 
    
  • Verificación de la URL base desde la que se ejecutó el applet.

    URL documentUrl = this.getDocumentBase(); 
    if(documentUrl.toString().equalsIgnoreCase(safeDocumentUrl) == false) 
        return false; 
    
Cuestiones relacionadas