Objetivo: Conocer cómo se administra la información de conexión para tener los elementos necesarios para resolver problemas.
MaxiComercio es una aplicación cliente, por lo que necesita conectarse a un servidor. Para efectuar la conexión se requiere que el programa almacene la información necesaria para evitar que el usuario tenga que introducirla cada vez que vaya a empezar a trabajar.
La información de conexión mínima para que un cliente de MaxiComercio pueda operar es:
* Información de conexión a la base de datos * Ubicación del repositorio de programasEstos datos de conexión se almacenan en la forma de la especificación para cadenas de conexión de OLE DB.
En el caso de MySQL además de la cadena de conexión OLE DB generalmente existe un DSN de ODBC que configuró el asistente de conexión o configuración de base de datos de MaxiComercio.
Formato, seguridad y ubicación de la información de conexión a la base de datos
La información de conexión a la B.D. (cadena OLE DB, usuario y contraseña) se almacenan en un archivo de texto XML, dentro de este archivo el nombre de usuario y contraseña se encuentran encriptados con AES de 128 bits para que no puedan ser vistos al abrir el archivo con el bloc de notas por ejemplo.
Adicionalmente junto al archivo xml de información de conexión a la base de datos se encuentra un archivo de firma que valida que el contenido del archivo xml no se ha modificado más que con el conjunto de componentes de administración de conexión de MaxiComercio.
El componente COM para la administración de la información de conexiones a bases de datos es geOLEDBServeces (dll).
La información de conexión a la base de datos se guarda en una carpeta dependiente del usuario de Windows, esto significa que cada usuario del equipo puede tener una lista distinta de conexiones a bases de datos.
El repositorio de programas (donde están los archivos javascript, xml y reportes) debe encontrarse en una carpeta compartida con permisos de “solo lectura” en la red (si el despliegue es en red o en el equipo local si es “standalone”).
MaxiComercio necesita conocer su ubicación para cargar los programas de inicio y todos los demás cuando se requieran.
Esta ubicación se encuentra en un archivo de texto denominado MaxiComercio.inf o Deminus.inf (en el caso de Déminus).
Para Windows Vista/7 la carpeta es: C:\Users\Usuario_del_Equipo\AppData\Local\GExecom
Dónde
* Usuario_del_Equipo es el nombre de usuario de Windows que inició sesión.Los archivos que ahí se encuentran son:
* geOLEDBInfo.xml. Contiene la información de conexión a la base de datos * geOLEDBInfo.afd. Es la firma electrónica del archivo geOLEDBInfo.xml * Maxicomercio.inf/Deminus.inf. Contiene la ubicación del repositorio de programas.Las conexiones administradas por geOLEDBServices Me encuentran clasificadas por “Aplicación”, de tal modo que en el mismo archivo xml se encuentran las de MaxiComercio, Déminus, otros programas o las de aplicaciones que defina el usuario.
La administración de esta información no debe hacerse directamente sobre el archivo xml pues la firma electrónica (en el archivo geOLEDBInfo.afd) no coincidiría y quedaría inutilizable.
Las medidas de seguridad sobre la información de geOLEDBInfo.xml como se dijo anteriormente son dos:
* Encriptado con AES128 y codificado Base64 del nombre de usuario y contraseña. Esto evita que al abrir el archivo con un editor de texto (como el bloc de notas de Windows) un usuario malintencionado se pueda hacer con las credenciales de conexión. * Firma electrónica del archivo xml. Esta medida de seguridad impide que se tome el bloque de datos encriptado de otro archivo y se sobre ponga al del equipo actual.Muestra del contenido del archivo geOLEDBInfo.xml, observe que los nodos XML de UserID y Password están codificados en Base64 (esto porque el resultado de la encripción contiene datos binarios que no se deben introducir en un documento xml).
Para modificar las conexiones use la herramienta “Administrador de conexiones” que se encuentra en el grupo de programas de MaxiComercio (carpeta Herramientas de Códice) en el menú Inicio de Windows. El código fuente de ejemplo VB6 se encuentra también disponible en esa ubicación.
Propiedades del registro de conexión
Nombre de la conexión: Es el identificador de la conexión. Aplicación: Es el nombre del grupo en el que se clasificará. Cadena de conexión: Son los parámetros que se introducen para crear una conexión a una base de datos Nombre de usuario y contraseña: Son las credenciales de acceso al servidor de la base de datos. Conexión predeterminada para esta aplicación: Permite indicar la conexión a utilizar por defecto cuando se solicite acceso a una aplicación. * Acerca de las conexiones registradasCada conexión se identifica con un nombre que no debería contener espacios en blanco ni caracteres especiales.
Este archivo (Maxicomercio.inf/Deminus.inf) puede modificarse con cualquier editor de texto (como el bloc de notas de Windows).
Muestra del contenido del archivo Maxicomercio.inf //Archivo de configuración de acceso al servidor de programas //Creado automáticamente. 11/03/2010 06:02:49 p.m. #SysPath D:\GExecom\Maxicomercio #Script MainSolo debe modificar la línea #SysPath e introducir la ubicación del repositorio que requiera.
Es importante que tome en cuenta que la ubicación que proporcione debe ser considerada “de confianza”.
Esta información no está encriptado porque su disponibilidad no representa un hueco de seguridad siempre que se tomen las previsiones correspondientes como se sugiere más adelante.
La seguridad del sistema está estructurada en dos niveles principales: alto y bajo.
El bajo nivel está representado por las previsiones que puede tomar desde el motor de la base de datos, la conectividad y el acceso al repositorio de programas.
El alto nivel (de aplicación) corresponde a la capa de lógica que se representa por el esquema de permisos, usuarios, grupos y perfiles. Este nivel se configura en el panel de control de MaxiComercio.
Las previsiones mínimas de bajo nivel que debe tomar son:
* Definir un usuario del motor de la base de datos con permisos limitados (no usar root para MySQL o SA para SQL Server) para que sea mediante el cual se conecta MaxiComercio. * Preferentemente restringir los accesos al motor de la base de datos por ubicaciones de red (es decir nodos o rangos de direcciones que pueden conectar al DBMS). * Compartir la carpeta del repositorio de programas con permisos de “Solo lectura” para evitar que se introduzcan secuencias de código o se carguen programas mal intencionados. * El usuario de Windows con el que se trabaje con el sistema preferentemente debe ser una cuenta limitada para evitar que se puedan hacer cambios a la configuración del sistema operativo y sus servicios