java security applet sandbox

¿Puede firmar un applet de Java pero mantenerlo en la caja de arena(NO le dé acceso completo a la computadora del usuario)?



security sandbox (1)

Gracias a los últimos cambios de Oracle, parece que tengo que firmar un applet, aunque no necesito o no quiero que tenga acceso ilimitado a la computadora del usuario (por lo que actualmente no está firmado). En particular, no quiero la advertencia que muestran para los applets firmados:

Esta aplicación se ejecutará con acceso sin restricciones que puede poner en riesgo su computadora y su información personal.

... lo que asustará a la gente que lo usa.

¿Es posible firmar un applet pero marcarlo de alguna manera para decir "pero sigue usando el sandbox"?

La única razón por la que lo estoy firmando es que a partir de la Versión 7, Actualización 40, Oracle ha aumentado aún más la molestia que los usuarios deben enfrentar cuando ejecutan applets sin firmar. Antes se podía marcar una casilla que decía que confiabas en un applet una vez, y eso sería recordado. A partir de la Actualización 40, solo se recuerda para esa sesión del navegador; la advertencia vuelve a aparecer si cierra el navegador y vuelve más tarde. También han dicho que van a deshabilitar los applets sin firmar por completo en "una versión futura" del complemento de Java.


Sí tu puedes. Esta página muestra cómo hacerlo (bueno, la mayoría; también necesita esta página ). Hay dos pasos principales:

  1. Ponga los atributos Permissions y Codebase en su archivo de manifiesto:

    Permissions: sandbox Codebase: *.myserver.com

    Estos nuevos atributos se introdujeron en Java 7 Update 25 y se discuten aquí . La primera página enlazada arriba solo muestra Codebase: myserver.com , pero la mayoría de los sitios querrán el comodín arriba. (No sé si el atributo Codebase es necesario para el sandbox del applet, pero de todos modos parece una buena idea para la mayoría de los applets firmados).

    Luego usa ese archivo de manifiesto cuando construyas tu jar, como:

    jar cvfm YourJarFile.jar your_manifest_file.txt classes_and_such

    Esos atributos terminarán en el archivo MANIFEST.MF en el contenedor, que le indica al tiempo de ejecución de Java que mantenga el applet en un entorno de seguridad.

  2. En su etiqueta <applet> , debe especificar el parámetro de permissions , como se explica aquí :

    <applet code=''yourAppletClass'' archive=''YourJarFile.jar''> <param name="permissions" value="sandbox"> </applet>

    Sin este segundo paso, un applet firmado que solicita permisos de espacio aislado en el contenedor pero no la etiqueta se evita que se ejecute con un cuadro de diálogo titulado "La aplicación no se puede ejecutar" dando "Razón: el manifiesto JAR solicitado para ejecutarse solo en el espacio aislado".

Si realiza los dos pasos anteriores, el usuario recibe un mensaje mucho más tranquilizador (y, presumiblemente, el applet permanece en un espacio aislado):

Esta aplicación se ejecutará con acceso limitado que está destinado a proteger su computadora y su información personal.

... y si marcan la casilla correspondiente que confía en el editor y la ubicación, no lo verán de nuevo la próxima vez que abran su navegador y ejecuten su applet.

(En el curso de esta pregunta, encontré la respuesta, pero como la respuesta no estaba en , pensé que seguiría publicando la pregunta y la respuesta ).