Вы находитесь на странице: 1из 11

TOPICOS AVANZADOS DE PROGRAMACIÓN Instituto

TECNOLÓGICO
Ingeniería en Sistemas Computacionales Tecnológico
NACIONAL
DE MÉXICO de la Costa Grande
Unidad II “Aplicaciones web”

Viernes 13 de Abril de 2018


Applets firmados
Un applet esta formado por una clase o
conjunto de clases escritas en Java que
está insertado en una página Web. Cuando
un usuario carga la página en la que está el
applet, éste se ejecuta localmente (en la
máquina cliente donde se está ejecutando el
navegador Web) y no remotamente (sobre
el sistema que está ejecutando el servidor
HTTP).

El hecho de que el código se ejecute


localmente implica que la seguridad sea
crucial. Los applets están sometidos a unas
restricciones de seguridad por defecto. Por
ejemplo, nadie desea que un applet cargado visitando una página Web borre sus ficheros. O que ese applet realice
conexiones a otras máquinas para transferir informaciónn. Estas restricciones están impuestas por un objeto del tipo
SecurityManager en el sistema cliente, que especifica queé acciones están permitidas y cuales no. A partir de la
versión 1.1 de la plataforma Java, las clases se pueden firmar digitalmente, estas clases (si el usuario confía en quien
las firma) pueden realizar acciones no permitidas a las clases no firmadas. Por defecto, el gestor de seguridad de los
navegadores verifica entre otras cosas que los applets

• No puedan leer los ficheros locales.


• No puedan escribir en los discos locales.
• No puedan establecer conexiones a otras máquinas salvo con el servidor que contiene el applet.
• No ejecutar programas locales.
• No puedan obtener información privada sobre el usuario.

Los applets deben ser subclases de la clase Applet (si se van a utilizar clases de AWT) o de JApplet (si se van a
utilizar clases de Swing).A diferencia de las aplicaciones vistas hasta el momento, la ejecución de un applet no
comienza en el método main(.). Hay una serie de métodos que son llamados cuando ocurren determinadas
circunstancias. Estos métodos de Applet o de JApplet son los que hay que sobreescribir.

Diagrama de ejecución de los métodos, cuando llama el navegador a estos:

Instructor: Carlos Baltazar Oliva Enero – Junio 2018 39


TOPICOS AVANZADOS DE PROGRAMACIÓN Instituto
TECNOLÓGICO
Ingeniería en Sistemas Computacionales Tecnológico
NACIONAL
DE MÉXICO de la Costa Grande
Unidad II “Aplicaciones web”

El esqueleto de un applet basado en la clase Applet se muestra a continuación:


import java . applet . Applet ;
import java . awt . * ;

class UnApplet extends Applet{


// Declaracion de atributos
public void init( ) {
// Iniciacion de las variables
// Construccion de l a GUI
}
public void start ( ) {
// Sentencias
}
public void stop ( ) {
// Sentencias
}
public void dest roy ( ) {
// Sentencias
}
public void paint ( Graphics g ) {
// Operaciones de dibujo ( si las hay )
}
}

Un applet concreto puede sobreescribir todos estos méodos o solamente algunos de ellos en función de la tarea que
deba realizar.

La jerarquía de las clases Applet y JApplet es la siguiente:

Instructor: Carlos Baltazar Oliva Enero – Junio 2018 40


TOPICOS AVANZADOS DE PROGRAMACIÓN Instituto
TECNOLÓGICO
Ingeniería en Sistemas Computacionales Tecnológico
NACIONAL
DE MÉXICO de la Costa Grande
Unidad II “Aplicaciones web”

Ejemplo: ISCTAPU2EJEM007
Archivo html
<!--
Nombre del programa: ISCTAPU2EJEM007.html
Fecha de programacion: 13 de Abril de 2018
Autor :
Objetivo : Carga el appet de java ISCTAPU2EJEM007.class
-->
<HTML>
<HEAD>
<TITLE>Topicos Avanzados de programación </TITLE>
</HEAD>
<CENTER>
<BODY background="ISCTAPU2EJEM007Fondo.png">
</BODY>
<h1>
UNIDAD 2
</h1>
<h6>
<img src = "ISCTAPU2EJEM007A.jpg" border="0" width="80" height="80">
"Desarrollo de aplicaciones para internet"
<img src = "ISCTAPU2EJEM007B.jpg" border="0" width="80" height="80">
</h6>
<APPLET CODE = "ISCTAPU2EJEM007.class"
WIDTH=1000
HEIGHT=200>
</APPLET>
</CENTER>
/******************************************************
Nombre del programa: ISCTAPU2EJEM007.java
Fecha de programacion: 13 de Abril de 2018
Autor :
Objetivo : Ejemplo del manejo de TextField con color y
tipo de letra, mediante el metod action –
return de tipo boleano
*******************************************************/
import java.awt.*;
import java.applet.*;

public class ISCTAPU2EJEM007 extends Applet{


// Declaracion de variables referenciales llamadas CampodeTexto1
// y CampodeTexto2de de clase TextField
TextField CampodeTexto1 = new TextField("",10);
TextField CampodeTexto2 = new TextField("",10);

// Declaracion y creacion de variable referencial llamada TipodeLetra


// indicando el tipo y tamaño de letra de la clase Font
Font TipodeLetra = new Font("Default",Font.PLAIN,12);

String Texto = "";

public void init(){


// Las variables objetos CampodeTexto1 y CampodeTexto2 se agregan
// al contendero principal del applet

Instructor: Carlos Baltazar Oliva Enero – Junio 2018 41


TOPICOS AVANZADOS DE PROGRAMACIÓN Instituto
TECNOLÓGICO
Ingeniería en Sistemas Computacionales Tecnológico
NACIONAL
DE MÉXICO de la Costa Grande
Unidad II “Aplicaciones web”

add(CampodeTexto1);
add(CampodeTexto2);

// Asignacion del color de letra a CampodeTexto1 mediantel el metodo


// setForeground color azul
CampodeTexto1.setForeground(Color.blue);

// Asignacion de color de fondo a CampodeTexto2 mediante el metodo


// setBackground de color blanco
CampodeTexto2.setBackground(Color.white);

// Asignacion del color de letra a CampodeTexto2 mediantel el metodo


// setForeground color rojo
CampodeTexto2.setForeground(Color.red);

// Asignacion del tipo de letra definido al CampodeTexto1 mediante el


// metodo setFont igual al tipo de letra por default de windows y de tamaño 12
CampodeTexto1.setFont( TipodeLetra );
}

// Declaracion del metodo action que se ejecutara cuando se presione


// enter en el CampoTexto1, y retornara un valor booleano verdadero
public boolean action (Event evt, Object arg) {
// Asignacion del contenido de CampodeTexto1 a la variable primitiva
// de tipo String, mediante el metodo getText()
Texto = CampodeTexto1.getText();

// Asignacion del contenido de Texto de tipo String, a CampodeTexto2


// mediante el metodo setText()
CampodeTexto2.setText(Texto);
return true;
}
}
Resultado

Instructor: Carlos Baltazar Oliva Enero – Junio 2018 42


TOPICOS AVANZADOS DE PROGRAMACIÓN Instituto
TECNOLÓGICO
Ingeniería en Sistemas Computacionales Tecnológico
NACIONAL
DE MÉXICO de la Costa Grande
Unidad II “Aplicaciones web”

Practica: ISCTAPU2PRAC007
En base al ejemplo ISCTAPU2EJEM007.java debera realizar las investigación necesaria para poder realizar la
practica

1) Debera deiseñar la interfaz para capturar


A) Numero de Control
B) Nombre
C) Apellido Paterno
D) Apellido Materno
E) Fecha de nacimiento
1) Dia
2) Mes
3) año
Bajo el siguiente formato
F) Fecha actual: en una sola captura
ejemplo 21 de Marzo de 2016
G) Domicilio completo: en una sola captura
2) Tomando en cuanta que se debe reflejar cada uno los datos capturados en su espejo
3) El campo texto destino (espejo) no se debe editar unicamente visible
4) Las Cajas de texto deben ser de clase swing
5) Por cada campo de texto debe utilizar color de fondo y letra diferente de forma aleatoria

¿Qué sucede si ejecuto un applet no firmado en el navegador?


Si tratamos de ejecutar en el navegador un applet que accese a los recursos locales y que no esté firmado no se
podrá ejecutar, en la consola de la JVM aparecerá un mensaje de error parecido al siguiente:

java.security.AccessControlException: access denied

¿Qué se necesita para firmar el applet y poderlo ejecutar?


Para firmar digitalmente un applet es necesario de un certificado (un archivo que contenga la firma), afortunadamente,
el mismo jdk nos provee de las herramientas necesarias para crearlo y posteriormente aplicarlo a nuestro archivo
.jar. Dentro de la carpeta bin que posee el jdk (en Windows se encuentra normalmente en C:\Archivos de
programa\jdkx.xx.xx) existen un par de aplicaciones que nos servirán, dichas aplicaciones son las siguientes:

keytool: para generar los certificados


jarsigner: para firmar los archivos .jar

¿Cómo genero un certificado?


Para generar un certificado que posteriormente te servirá para firmar los applets solo basta ejecutar el siguiente
comando desde la línea de comandos (en Windows puedes abrir la línea de comandos desde Inicio > Ejecutar >
escribes cmd y presionas Enter):

keytool –genkey –alias TAP –validity 365 –v

Donde:
TAP es el alias que voy a utilizar (debes sustituirlo por el que tú deseas).
365 son los días de validez del certificado.

Después de ejecutar el comando se te harán algunas preguntas (como se muestra en la imagen siguiente), debes
contestarlas a tu preferencia (como te venga en gana pues).

Instructor: Carlos Baltazar Oliva Enero – Junio 2018 43


TOPICOS AVANZADOS DE PROGRAMACIÓN Instituto
TECNOLÓGICO
Ingeniería en Sistemas Computacionales Tecnológico
NACIONAL
DE MÉXICO de la Costa Grande
Unidad II “Aplicaciones web”

Ya tengo mi certificado ahora, ¿cómo lo utilizo para firmar los applets?


Una vez que tienes tu certificado basta con ejecutar el siguiente comando para firmarlo:

jarsigner.exe AppletFirmado.jar TAP –verbose

Después de esto te pedirá escribir la contraseña que definiste anteriormente, si es correcta el applet quedará firmado
y listo para ejecutarse en el navegador. Es importante que tomes en cuenta que si utilizas varios archivos jar en tu
aplicación es necesario que todos estén firmados ya que de lo contrario seguirás sin poder ejecutarla. Cuando ejecutes
tu aplicación te aparecerá un mensaje parecido al siguiente:

Una vez que des clic en Ejecutar podrás trabajar con ella sin problemas.

Instructor: Carlos Baltazar Oliva Enero – Junio 2018 44


TOPICOS AVANZADOS DE PROGRAMACIÓN Instituto
TECNOLÓGICO
Ingeniería en Sistemas Computacionales Tecnológico
NACIONAL
DE MÉXICO de la Costa Grande
Unidad II “Aplicaciones web”

El plugin de Java
A la hora de cargar un applet en un navegador Web se presentan cualquiera de las siguientes acciones:
• Cargarlo en la maquina virtual que proporciona el propio navegador o,
• Cargarlo en el plugin que proporciona Oracle (lo cual implica que debe estar instalado el plugin para el
navegador).

La primera aproximacion tiene la ventaja de que el cliente podrá ejecutar el applet sin necesidad de haber
instalado nada adicional en el navegador. Pero tiene el inconveniente de que si el proveedor del navegador no
actualiza la máquina virtual es posible que no se pueda cargar codigo desarrollado con las últimas versiones del
JSDK. Si el applet que hemos desarrollado merece la pena y necesita las últimas bibliotecas de clases se puede
forzar a que el cliente utilice el plugin pero si es una mera decoración se recomienda no forzar a utilizar el plugin.

Si se desea forzar al navegador a utilizar el plugin, el (sencillo) código HTML mostrado a lo largo de este tema se
complica ya que hay que tener en cuenta las particularidades de cada navegador (y del appletviewer) para
contemplar todas las posibilidades. El codigo de la derecha muestra la etiqueta <applet> tal y como lo hemos visto
hasta ahora y el de la derecha muestra la transformacion para que se ejecute en el plugin (hay que tener en cuenta
que si el cliente no tiene instalado el plugin este código intenta instalarlo).

Applets firmados
Seguridad en Java
Las características del diseño del lenguaje (verificación de los límites de los vectores, comprobacion de las
conversiones de tipo, ...) Un mecanismo de control de acceso que controla lo que el código puede hacer (acceso a
archivos, acceso a la red,...). Firma de codigo, con lo que es posible utilizar los algoritmos de criptografía estandar
para autenticar el codigo. El usuario de este código puede determinar quién creó el codigo y si el codigo ha sido
alterado después de haber sido firmado. Para ejecutar una aplicacion en la máquina virtual lo primero que hay
que hacer es cargar las clases necesarias para lo cual la maquina virtual utiliza cargadores de clase (que se
pueden personalizar). Una vez que los archivos de clases se han cargado en la máquina virtual, se verifica la
integridad del bytecode comprobando:

• Que las variables estan inicializadas antes de ser utilizadas

• Que en las llamadas a un método los argumentos son del tipo correcto.

• Que no se han violado las reglas para el acceso a los métodos y datos privados.

• Que los accesos a las variables locales caen dentro de la pila runtime (la pila de llamadas a métodos)...

Administradores de seguridad y permisos


Una vez que la clase ha sido cargada y verificada, entra en acción el tercer mecanismo de la plataforma
Java: el administrador de seguridad. El administrador de seguridad es una clase que controla si el código realiza
operaciones que no están permitidas (en tal caso se lanza una excepción).

Entre las operaciones que se comprueban están las siguientes:


• Si el hilo actual puede crear un nuevo cargador de clases.

• Si el hilo actual puede crear un subproceso.

• Si el hilo actual puede detener la máquina virtual.

• Si úna clase puede acceder a un miembro de otra clase.


• Si el hilo actual puede acceder a un paquete específico.

Instructor: Carlos Baltazar Oliva Enero – Junio 2018 45


TOPICOS AVANZADOS DE PROGRAMACIÓN Instituto
TECNOLÓGICO
Ingeniería en Sistemas Computacionales Tecnológico
NACIONAL
DE MÉXICO de la Costa Grande
Unidad II “Aplicaciones web”

• Si el hilo actual puede acceder o modificar las propiedades del sistema.

• Si el hilo actual puede leer desde o escribir en un determinado archivo.

• Si el hilo actual puede eliminar un archivo.

• Si el hilo actual puede aceptar una conexión socket desde un host y número de puerto específicos.

• Si el hilo actual puede realizar una conexión socket a un host y número de puerto específicos.

• Si el hilo actual puede esperar una solicitud de conexión en un número de puerto local específico.

• Si el hilo actual puede llamar a los métodos stop(), suspend(), resume(), destroy(), set- Priority() /
setMaxPriority(), setName(), o setDaemon() de un hilo dado o de un grupo de hilos.
• Si el hilo actual puede iniciar un trabajo de impresión.

• Si una clase puede acceder al portapapeles del sistema.

• Si una clase puede acceder a la cola de eventos de AWT.

El comportamiento por defecto al ejecutar aplicaciones Java es que no se instala ningún administrador de
seguridad, de modo que todas estas operaciones están permitidas. Por otra parte la utilidad appletviewer
instala inmediatamente un administrador se seguridad (denominado AppletSecurity) que es bastante
restrictivo.

Ejemplo: ISCTAPU2EJEM008
Archivo html
<!--
Nombre del programa: ISCTAPU2EJEM008.html
Fecha de programacion: 13 de Abril de 2018
Autor :
Objetivo : Carga el appet de java ISCTAPU2EJEM008.class
-->
<HTML>
<HEAD>
<TITLE>Topicos Avanzados de programación </TITLE>
</HEAD>
<CENTER>
<h1>
UNIDAD 2
</h1>
<h6>
"Desarrollo de aplicaciones para internet"
</h6>
<APPLET
CODE = "ISCTAPU2EJEM008.class"
WIDTH = 1000
HEIGHT = 200>
</APPLET>
</CENTER>
</HTML>

Instructor: Carlos Baltazar Oliva Enero – Junio 2018 46


TOPICOS AVANZADOS DE PROGRAMACIÓN Instituto
TECNOLÓGICO
Ingeniería en Sistemas Computacionales Tecnológico
NACIONAL
DE MÉXICO de la Costa Grande
Unidad II “Aplicaciones web”

Archivo java
/*************************************************************
Nombre del programa: ISCTAPU2EJEM008.java
Fecha de programacion: 13 de Abril de 2018
Autor :
Objetivo : Ejemplo del manejo de TextField con color y tipo
de letra tipo espejo, mediante el metodo handleEvent
return super.handleEvent(evt), similar a la practica
ISCTAPU2EJEM007.java
***************************************************************/
import java.awt.*;
import java.applet.*;

public class ISCTAPU2EJEM008 extends Applet{


// Declaracion y creacion de variable objeto CampoTexto1 con la asignacion
// de datos vacios y una logitud de 10
TextField CampodeTexto1 = new TextField("",10);

// Declaracion y creacion de variable objeto CampoTexto2 con la asignacion


// de datos vacios y una logitud de 10
TextField CampodeTexto2 = new TextField("",10);

// Declaracion y asinacion de variable primitiva Texto con inicializacion vacio


String Texto = "";

// Esta función miembro es llamada al crearse el applet. Es llamada sólo una vez.
// La clase Applet no hace nada en init(). Las clases derivadas deben sobrecargar
// este método para cambiar el tamaño durante su inicialización, y cualquier otra
// inicialización de los datos que solamente deba realizarse una vez. Deberían
// realizarse al menos las siguientes acciones:
// Carga de imágenes y sonido
// El redimensionado del applet para que tenga su tamaño correcto
// Asignación de valores a las variables globales
public void init() {
// Agregar la variable objeto CampoTexto1 al applet
add(CampodeTexto1);

// Asignar el color azul al color del texto del objeto CampoTexto1


CampodeTexto1.setForeground(Color.blue);

// Agregar la variable objeto CampoTexto2 al applet


add(CampodeTexto2);

// Asignar el color rojo al color del texto del objeto CampoTexto1


CampodeTexto2.setForeground(Color.red);

// Asignacion de falso a la edicion del objeto CampoTexto2, esto quiere decir que no se puede editar
CampodeTexto2.setEditable(false);

// Asignacion de color blanco al fondo del objeto CampoTexto2


CampodeTexto2.setBackground(Color.white);
}

// Declaracion del metodo handleEvent que realiza un conjunto de

Instructor: Carlos Baltazar Oliva Enero – Junio 2018 47


TOPICOS AVANZADOS DE PROGRAMACIÓN Instituto
TECNOLÓGICO
Ingeniería en Sistemas Computacionales Tecnológico
NACIONAL
DE MÉXICO de la Costa Grande
Unidad II “Aplicaciones web”

// acciones conforme se pulsa una tecla en el contenido del CampodeTexto1


public boolean handleEvent(Event evt){
// Se asigna el contenido del objeto CampoTexto1 a la variable primitiva Texto
Texto = CampodeTexto1.getText();

// Se asigna al objeto CampoTexto2 el contenido de la variable Texto


CampodeTexto2.setText(Texto);

// Retorno automatico del llamado al metodo handleEvent al momento


// de pulsar la tecla del contenido deCampode Texto1
return super.handleEvent(evt);
}
}

Resultado

Practica ISCTAPU2PRAC008
1) En base al ejemplo ISCTAPU2EJEM008.java debera realizar las investigación necesaria para poder realizar la
practica
2) Debera deiseñar la interfaz para capturar
a) Nombre
B) Apellido Paterno
C) Apellido Materno
D) Fecha de nacimiento
1) Año
2) Mes
3) Dia
Bajo el siguiente formato
2018 Abril 13

3) A su vez cada uno de los datos debe tener su objeto reflejo correspondiente

Instructor: Carlos Baltazar Oliva Enero – Junio 2018 48


TOPICOS AVANZADOS DE PROGRAMACIÓN Instituto
TECNOLÓGICO
Ingeniería en Sistemas Computacionales Tecnológico
NACIONAL
DE MÉXICO de la Costa Grande
Unidad II “Aplicaciones web”

4) El objeto reflejo del nombre debe tener las siguientes caracteristicas


1) Color de fondo blanco
2) Color de letra Rojo
5) El objeto reflejo del Apellido paterno debe tener las siguientes caracteristicas
1) Color de fondo Negro
2) Color de letra blanca
6) El objeto reflejo del Apellido materno debe tener las siguientes caracteristicas
1) Color de fondo Azul
2) Color de letra blanca

Instructor: Carlos Baltazar Oliva Enero – Junio 2018 49

Вам также может понравиться