07 mayo 2006

Más sobre rmi

Bueno, esta vez hay varias cosas sobre rmi y el tutorial de rmi.

Por un lado, mande un correo a la persona que había copiado el tutorial en http://siul02.si.ehu.es/%7Ejimena/ISO/LAB_4/LAB_4.htm pidiéndole que pusiera un enlace al original. Me constestó amablemente y ya ha puesto el enlace.

En cuanto al tema de seguridad y los experimentos que he hecho, así como el tutorial de SecurityManager, veo que tuve unos problemas de concepto.

Es posible hacer, como indiqué allí, que un cliente envíe una clase maliciosa al servidor que haga algo que no debe y que el servidor puede protegerse contra estas acciones por medio del SecurityManager y el fichero java.policy. Sin embargo, veo que no es tan fácil. Si la clase enviada no está en el CLASSPATH del servidor, no se acepta con tanta facilidad como yo pretendía. Si está en el classpath del servidor, el problema no es tan grave, puesto que es una clase propia del servidor y se supone que no tiene código maloso.

Buscando por internet, veo que sí es posible enviar clases que no existen en el classpath del servidor y que este las cargue dinámicamente (carga dinámica de clases en rmi) y las use. Sólo en ese caso es donde está el problema de seguridad.

Esto sólo es posible con rmi (no con sockets) y rmi por defecto no carga este tipo de clases si no tiene un SecurityManager instalado. En mis pruebas, poniendo un RMISecurityManager y poniendo un fichero java.policy con todos los permisos para todo el mundo, no he conseguido que se carge dinámicamente una clase. Seguiré investigando y posiblemente tenga que cambiar/ampliar los tutoriales ....

No hay comentarios: