1 TEMA 5. Seguridad en Java 1.Introducción a los Controladores de Seguridad 2.Decidir qué Métodos Sobreescribir del SecurityManager 3.Escribir un Controlador.

Slides:



Advertisements
Presentaciones similares
CJ02 – Técnicas avanzadas en java 1.4 y 5.0
Advertisements

UNIVERSIDAD PRIVADA SAN PEDRO ESCUELA INGENIERIA CIVIL
FUNDAMENTALS OF THE JAVA PROGRAMMING LANGUAGE (SL-110) CAPÍTULO 13 Ing. Ronald Criollo.
Java nos ofrece System.out para escribir en pantalla, pero también tenemos System.in para leer. System.in es un objeto de una clase de java que se llama.
Ayudantía Pre-Actividad 5 Multimedios. Ayudantía Pre-Actividad 5 (1) creación de varias clases, y composición (2) manejo de threads (3) manejo de excepciones.
Curso de java básico (scjp)
Exceptions y Assertions Introducción a la terminología Bloques: try, catch Uso de finally Bloques: try, catch, finally Categorías de Exceptions Excepciones.
CJ02 – Técnicas avanzadas en java 1.4 y 5.0
Curso de java básico (scjp)
CJ02 – Técnicas avanzadas en java 1.4 y 5.0
Archivos de Texto. Introducción Los archivos son una secuencia de bits que se guarda en el disco duro. La ventaja de utilizar archivos es que los datos.
Archivos Binarios. Introducción En clase ya vimos el uso de archivos de texto en Java, pero el uso de archivos es mucho más poderoso que eso, al utilizar.
DESARROLLO DE SOLUCIONES EMPRESARIALES MOVILES USANDO TECNOLOGIA SUN APLICACIONES MOVILES CON J2ME RMS Ing. Ronald Criollo.
EXCEPCIONES UNIDAD 5.
Programación Interactiva Manejo de Excepciones
ÍNDICE Introducción. Trabajar con Applets. Definición de Applet.
Lenguaje de programación Java
Clases Extendidas La clase extendida hereda los campos y métodos de la clase de la cual extiende. La clase original se conoce como superclase y la clase.
Programación en Java Instructor:.
Arquitectura CLARO-TECNOTREE CAPITULO 4: Excepciones
Capitulo 4 Excepciones.
Genéricos en Java Jaime Ramírez, Ángel Lucas González
Entornos orientados a objetos
Tema 1. Introducción a la programación (Lenguaje java).
Tratamiento de listas en Java
1.2 Sintaxis del lenguaje Java.
2.4 Construcción de un TAD a partir de otro.
RMI (Remote Method Invocation)
CONCEPTES AVANÇATS DE SISTEMES OPERATIUS Departament d’Arquitectura de Computadors (apunts de l’assignatura en format transparència) Multithreading and.
Programación Orientada a Objetos en Java
PROGRAMACIÓN EN JAVA Curso-taller inicial de programación en JAVA Facultad de Estadística e Informática TEMA II.
Archivos Contenido: Archivos de Texto Archivos de Acceso Aleatorio
HERENCIA.
Excepciones y archivos Info 033. Exception El término Exception es la palabra corta para la frase "evento excepcional." Definition: Una excepción es un.
Manejo de excepciones en Java
Tema 7: Polimorfismo Antonio J. Sierra. Índice Introducción. Sobrecarga de métodos. Objetos como parámetros. Paso de argumentos. Devolución de objetos.
Polimorfismo Lenguajes de Programación II Corporación Universitaria del Caribe CECAR.
Lic. Rosemary Torrico Bascopé
INSTITUTO TECNOLOGICO DE TEHUACAN Ingeniería en sistemas computacionales Curso de apoyo a la titulación EXCEPCIONES EN JAVA Diciembre de 2008.
Clases y objetos La unidad fundamental de programación OO son las clases. Conjunto de métodos y semántica Qué se va a hacer POO Clase: que define la implementación.
SCJP SUN CERTIFIED PROGRAMMER FOR JAVA 6. SCJP 6.0 SEMANA CINCO CONSOLE.
Tema 6: Clases Antonio J. Sierra.
Igor Santos Grueiro. Ahora tenemos datos y datos …
UNIDAD 2 CLASES Y OBJETOS. CLASE Elementos cabecera y cuerpo de la clase. Cabecera: aporta información fundamental sobre la clase en sí y constituye de.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Objetos.
7. Interfaces Herencia múltiple Interfaces Comparable y Comparator
Invocación de Métodos Remotos RMI: Remote Method Invocation
Tema 11: Excepciones Antonio J. Sierra.
Patrones Creacionales
Introducción a Java (2ª parte) - excepciones, colecciones, i/o, … -
Diplomado Desarrollo de Aplicaciones en Internet
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Encapsulamiento.
Capítulo 5 - b: Hilos. 4.2 Silberschatz, Galvin and Gagne ©2005 Operating System Concepts – 7 th edition, Jan 23, 2005 Ejemplo de hilos: un applet Un.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Encapsulamiento.
Programación Orientada a Objetos Unidad 4 Excepciones Universidad de Chile Departamento de Ciencias de la Computación.
1 Manejo de Excepciones y otros Agustín J. González ELO-329.
UNIDAD VI Recursos esenciales de Java LSC. Natalia Rodríguez Castellón.
Java Applets David Gil
SCJP SUN CERTIFIED PROGRAMMER FOR JAVA 6
Herencia. Introducción La idea básica es poder crear clases basadas en clases ya existentes. Cuando heredamos de una clase existente, estamos re-usando.
EI, Profesor Ramón Castro Liceaga Agosto de 2005 UNIVERSIDAD LATINA (UNILA) PROGRAMACION ORIENTADA A OBJETOS EN JAVA (Optativa) PROGRAMACION DE APPLETS.
Detalles Generales sobre Java
Tratamiento de excepciones
Ing. Esp. Ricardo Cujar.  Lenguaje de programación orientado a objetos.  Desarrollado por Sun MicroSystems.  Independiente del Sistema Operativo gracias.
MANEJO DE EXCEPCIONES. 21/11/2005 E.T.S de Ingenieros de Telecomunicacion.2 Índice ¿Qué es una excepción? Tipos de situaciones. Manejo de excepciones.
Metodología de Programación Ayudantía 4 lelagos.ublog.cl 2009.
Programación orientada a objetos La programación orientada a objetos o POO (OOP según sus siglas en inglés) es un paradigma de programación que usa objetos.
Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Práctica 4 Versión Diseño de tipos Igualdad, representación, código,
Programación en Java Introducción a Java. Reseña histórica Surge en 1991 por Sun Microsystems Desarrollado para electrodomésticos Se buscaba un código.
Programación en Java Introducción a Java. Reseña histórica Surge en 1991 por Sun Microsystems Desarrollado para electrodomésticos Se buscaba un código.
Transcripción de la presentación:

1 TEMA 5. Seguridad en Java 1.Introducción a los Controladores de Seguridad 2.Decidir qué Métodos Sobreescribir del SecurityManager 3.Escribir un Controlador de Seguridad 4.Instalar un Controlador de Seguridad 5.Gestor de seguridad en RMI

2 Bibliografía Tutoriales Sun: l/security/index.html l/security/index.html l/security/index.html hnotes/guides/security/index.html hnotes/guides/security/index.html

3 El controlador de seguridad actúa como un guardia de seguridad a tiempo completo. El controlador de seguridad actúa como un guardia de seguridad a tiempo completo. La clase SecurityManager del paquete java.lang es una clase abstracta que proporciona el interface de programación y una implementación parcial para todos los controladores de seguridad de Java. La clase SecurityManager del paquete java.lang es una clase abstracta que proporciona el interface de programación y una implementación parcial para todos los controladores de seguridad de Java. Una aplicación debe crear e instalar su propio controlador de seguridad. Una aplicación debe crear e instalar su propio controlador de seguridad. Introducción a los Controladores de Seguridad 1. Introducción a los Controladores de Seguridad Seguridad en Java

4 Los navegadores y los visualizadores de applets crean su propio controlador de seguridad cuando arrancan. Los navegadores y los visualizadores de applets crean su propio controlador de seguridad cuando arrancan. Un applet está sujeto a las restricciones de acceso. Un applet está sujeto a las restricciones de acceso. Introducción a los Controladores de Seguridad 1. Introducción a los Controladores de Seguridad Seguridad en Java

5 Para obtener el controlador de seguridad actual: Para obtener el controlador de seguridad actual: getSecurityManager() de la clase System getSecurityManager() devuelve null si no hay ningún controlador de seguridad actual en la aplicación. getSecurityManager() devuelve null si no hay ningún controlador de seguridad actual en la aplicación. Una vez se tiene el controlador de seguridad, se pueden permitir o prohibir ciertas operaciones. Una vez se tiene el controlador de seguridad, se pueden permitir o prohibir ciertas operaciones. Por ejemplo, el método System.exit(), que finaliza el interprete Java, utiliza el método checkExit() del controlador de seguridad para aprobar la operación de salida: Por ejemplo, el método System.exit(), que finaliza el interprete Java, utiliza el método checkExit() del controlador de seguridad para aprobar la operación de salida: SecurityManager security = System.getSecurityManager();if (security != null) { security.checkExit(status); Introducción a los Controladores de Seguridad 1. Introducción a los Controladores de Seguridad Seguridad en Java

6 Si el controlador de seguridad aprueba la operación de salida, el checkExit() retorna normalmente. Si el controlador de seguridad aprueba la operación de salida, el checkExit() retorna normalmente. Si el controlador de seguridad prohibe la operación, el checkExit() lanza una SecurityException. Si el controlador de seguridad prohibe la operación, el checkExit() lanza una SecurityException. Introducción a los Controladores de Seguridad 1. Introducción a los Controladores de Seguridad Seguridad en Java

7 El conjunto de métodos checkXXX() representa el conjunto de operaciones de las clases de los paquetes Java y el sistema de ejecución de Java que ya están sujetos a la protección del controlador de seguridad. El conjunto de métodos checkXXX() representa el conjunto de operaciones de las clases de los paquetes Java y el sistema de ejecución de Java que ya están sujetos a la protección del controlador de seguridad. Si se escribe el propio controlador de seguridad, se puede tener que sobreescribir los métodos checkXXX() de SecurityManager para modificar la política de seguridad de las operaciones específicas. Si se escribe el propio controlador de seguridad, se puede tener que sobreescribir los métodos checkXXX() de SecurityManager para modificar la política de seguridad de las operaciones específicas. Introducción a los Controladores de Seguridad 1. Introducción a los Controladores de Seguridad Seguridad en Java

8 Podrías tener que sobreescribir varios métodos checkXXX() del SecurityManager. Podrías tener que sobreescribir varios métodos checkXXX() del SecurityManager. La primera columna de la siguiente tabla son objetos sobre los que se pueden realizar varias operaciones. La primera columna de la siguiente tabla son objetos sobre los que se pueden realizar varias operaciones. La segunda columna lista los métodos de SecurityManager que aprueban las operaciones de los objetos de la primera columna. La segunda columna lista los métodos de SecurityManager que aprueban las operaciones de los objetos de la primera columna. Decidir qué Métodos Sobreescribir del SecurityManager 2. Decidir qué Métodos Sobreescribir del SecurityManager Métodos para sobreescribir

9 Decidir qué Métodos Sobreescribir del SecurityManager 2. Decidir qué Métodos Sobreescribir del SecurityManager Métodos para sobreescribir

10 Para escribir tu propio controlador de seguridad, debes crear una subclase de la clase SecurityManager. Para escribir tu propio controlador de seguridad, debes crear una subclase de la clase SecurityManager. Esta subclase sobreescribe varios métodos de SecurityManager para personalizar las verificaciones y aprobaciones necesarias para una aplicación Java. Esta subclase sobreescribe varios métodos de SecurityManager para personalizar las verificaciones y aprobaciones necesarias para una aplicación Java. El ejemplo restringe la lectura y escritura en el sistema de ficheros. El ejemplo restringe la lectura y escritura en el sistema de ficheros. Un método que abra un fichero para leer invoca uno de los métodos checkRead() de SecurityManager Un método que abra un fichero para leer invoca uno de los métodos checkRead() de SecurityManager Un método que abre un fichero para escribir invoca a uno de los métodos checkWrite() se SecurityManager. Un método que abre un fichero para escribir invoca a uno de los métodos checkWrite() se SecurityManager. Escribir un Controlador de Seguridad 3. Escribir un Controlador de Seguridad Ejemplo

11 La política implementada por nuestro ejemplo le pide al usuario una password cuando la aplicación intenta abrir un fichero para leer o escribir. Si la password es correcta se permite el acceso. La política implementada por nuestro ejemplo le pide al usuario una password cuando la aplicación intenta abrir un fichero para leer o escribir. Si la password es correcta se permite el acceso. Todos los controladores de seguridad deben ser una subclase de SecurityManager. Así, nuestra PasswordSecurityManager desciende de SecurityManager. Todos los controladores de seguridad deben ser una subclase de SecurityManager. Así, nuestra PasswordSecurityManager desciende de SecurityManager. PasswordSecurityManager class PasswordSecurityManager extends SecurityManager {...} class PasswordSecurityManager extends SecurityManager {...} Escribir un Controlador de Seguridad 3. Escribir un Controlador de Seguridad Ejemplo

12 Luego, PasswordSecurityManager declara un ejemplar de la variable privada password para contener el password que el usuario debe introducir para poder permitir el acceso al sistema de ficheros restringido. Luego, PasswordSecurityManager declara un ejemplar de la variable privada password para contener el password que el usuario debe introducir para poder permitir el acceso al sistema de ficheros restringido. La password se selecciona durante la construcción. La password se selecciona durante la construcción. PasswordSecurityManager(String password) { super(); this.password = password;} Escribir un Controlador de Seguridad 3. Escribir un Controlador de Seguridad Ejemplo

13 private boolean accessOK() { int c; int c; DataInputStream dis = new DataInputStream(System.in); String response; DataInputStream dis = new DataInputStream(System.in); String response; System.out.println("What's the secret password?"); System.out.println("What's the secret password?"); try { try { response = dis.readLine(); response = dis.readLine(); if (response.equals(password)) return true; if (response.equals(password)) return true; else return false; } else return false; } catch (IOException e) { return false; }} catch (IOException e) { return false; }} Escribir un Controlador de Seguridad 3. Escribir un Controlador de Seguridad Ejemplo

14 public void checkRead(FileDescriptor filedescriptor) { if (!accessOK()) throw new SecurityException("Not a Chance!");} if (!accessOK()) throw new SecurityException("Not a Chance!");} public void checkRead(String filename) { if (!accessOK()) throw new SecurityException("No Way!");} if (!accessOK()) throw new SecurityException("No Way!");} public void checkRead(String filename, Object executionContext) { if (!accessOK()) throw new SecurityException("Forget It!");} if (!accessOK()) throw new SecurityException("Forget It!");} public void checkWrite(FileDescriptor filedescriptor) { if (!accessOK()) throw new SecurityException("Not!");} if (!accessOK()) throw new SecurityException("Not!");} public void checkWrite(String filename) { if (!accessOK()) throw new SecurityException("Not Even!"); if (!accessOK()) throw new SecurityException("Not Even!"); SecurityException es una excepción en tiempo de ejecución, y no necesita ser declarada en la clausula throws de estos métodos. Escribir un Controlador de Seguridad 3. Escribir un Controlador de Seguridad Ejemplo

15 Por defecto, la clase SecurityManager prohíbe todas las operaciones que están sujetas a las restricciones de seguridad. Por defecto, la clase SecurityManager prohíbe todas las operaciones que están sujetas a las restricciones de seguridad. Por lo que podrías encontrar que tienes que sobreescribir muchos métodos checkXXX() para obtener el comportamiento deseado. Por lo que podrías encontrar que tienes que sobreescribir muchos métodos checkXXX() para obtener el comportamiento deseado. Todos los métodos checkXXX() de la clase SecurityManager operan de la misma forma. Todos los métodos checkXXX() de la clase SecurityManager operan de la misma forma. –Si el acceso está permitido, el método retorna. –Si el acceso no está permitido, el método lanza una SecurityException. Asegúrate de que implementas de esta forma tus métodos checkXXX() sobreescritos. Asegúrate de que implementas de esta forma tus métodos checkXXX() sobreescritos. Escribir un Controlador de Seguridad 3. Escribir un Controlador de Seguridad Ejemplo

16 Para instalar el controlador de seguridad unicamente debes ejecutar el método: Para instalar el controlador de seguridad unicamente debes ejecutar el método:System.setSecurityManager() Ver el ejemplo que se adjunta. Ver el ejemplo que se adjunta. Instalar un Controlador de Seguridad 4. Instalar un Controlador de Seguridad

17 Por defecto el gestor de seguridad de RMI es muy restrictivo: no permite acceso a los ficheros y solo permite conexiones a la máquina de origen (similar a de las applets ver siguiente tema). Por defecto el gestor de seguridad de RMI es muy restrictivo: no permite acceso a los ficheros y solo permite conexiones a la máquina de origen (similar a de las applets ver siguiente tema). No permite descarga de resguardo (Stub) ni permite a un objeto cliente de RMI contactar con el registro RMI. No permite descarga de resguardo (Stub) ni permite a un objeto cliente de RMI contactar con el registro RMI. Por lo tanto deberemos extender la clase RMISecurityManager o modificar el fichero de políticas de seguridad java para RMI (java.policy). Por lo tanto deberemos extender la clase RMISecurityManager o modificar el fichero de políticas de seguridad java para RMI (java.policy). Gestor de seguridad en RMI 5. Gestor de seguridad en RMI SM RMI

18 Permisos en java: cs/guide/security/permissions.html Permisos en java: cs/guide/security/permissions.html cs/guide/security/permissions.html cs/guide/security/permissions.html Fichero java.policy: cs/guide/security/PolicyFiles.html Fichero java.policy: cs/guide/security/PolicyFiles.html cs/guide/security/PolicyFiles.html cs/guide/security/PolicyFiles.html Seguridad en java: /html/sjava.html#toc6 Seguridad en java: /html/sjava.html#toc6 Gestor de seguridad en RMI 5. Gestor de seguridad en RMI Enlaces de interés