Applets firmados, JavaScript y la pérdida de privilegios
Publicado en Java, JavaScript el 16 de September, 2009 por Fran. (Sin comentarios)De forma predeterminada, los applets de Java tienen sus funciones limitadas por la sandbox para que no puedan acceder a la máquina local. Pero si el applet se firma, y el usuario acepta su ejecución (mediante una ventana de aviso) el applet podrá acceder a la máquina local como si se tratase de una aplicación Java más.
Hasta aquí todo bien, pero resulta que si desde la web en la que se carga el applet firmado, se realiza una llamada a cualquier método de éste desde JavaScript, el applet vuelve a perder los privilegios ya que el código JavaScript proviene es inseguro.
Aquí surge la pregunta, ¿cómo se hace para poder ejecutar métodos de un applet firmado desde JavaScript sin que el applet pierda los privilegios? La respuesta es utilizar el siguiente trozo de código:
AccessController.doPrivileged (
new PrivilegedAction () {
public Object run () {
// Código con privilegios
}
});
Este código permite ejecutar el código que se quiera con privilegios, además el valor devuelto es de tipo Object, por lo que se puede devolver el tipo de objeto que se quiera.
Basado en JavaScript and Applet interaction.