Pregunta

¿Puede un JApplet usar un JFileChooser para que el usuario pueda seleccionar un archivo en su disco duro? ¿O esto violaría la seguridad del applet de Java? (Supongo que se están utilizando las configuraciones de seguridad predeterminadas. No quiero pedir a mis usuarios que me concedan permisos adicionales).

¿Fue útil?

Solución

Este hilo indica que necesita firmar digitalmente su applet antes de que se permita un JFileChooser .

Otros consejos

Como se mencionó, debe firmar su applet, lo que da como resultado una "advertencia de seguridad vaga". cuando se le presenta al usuario el applet. Cuando el usuario acepta ejecutar este applet, el applet tiene acceso completo y funciona como una aplicación ordinaria con sus obvias implicaciones de seguridad. Estoy en el mismo dilema con respecto a una aplicación web en la que estoy trabajando y aún no estoy seguro de si se implementará.

Alternativamente, puedes usar el editor de archivos incorporado en el navegador web y recuperar el contenido del archivo de tu servidor si estás trabajando con archivos más pequeños.

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

  • Validación del 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;
    

En ese caso (de usar la configuración predeterminada), tiene razón, el administrador de seguridad predeterminado no permite el acceso a los archivos locales.

Probablemente tendrá que usar PrivilegedAction para leer cualquier cosa del disco duro del usuario. Tal como dijo @mmyers, también deberá firmar su applet.

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

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top