Powered By Blogger

miércoles, 2 de noviembre de 2011

Proteger el back-end en Access 2007/2010

 

A partir de Access 2007, si protegemos nuestros datos con una contraseña, quedan a buen recaudo, puesto que la contraseña es mucho más segura que en versiones anteriores y, además, los datos se cifran.
El problema está en cómo hacer que nuestra aplicación acceda a esos datos sin que la contraseña quede expuesta. Podemos evitar tener tablas vinculadas y abrir los recordsets de todos los objetos mediante código, pero eso resulta pesado y se pierde la sencillez, que es la principal ventaja de Access. Al vincular tablas de una BD protegida, Access pide la contraseña y la guarda en la propiedad Connect del objeto TableDef correspondiente a esa tabla, de manera que basta con leer la propiedad Connect de la tabla correspondiente para conocer la contraseña
Es lo que se plantea en este hilo en UtterAccess http://www.utteraccess.com/forum/Access-2007-security-t1242310.html&p=1243573#entry1243573 y ahí mismo proponen una solución que, aunque luego se complica, es bastante sencilla y es de la que partimos: Las tablas se vinculan sin contraseña, lo cual al intentar abrirlas produciría un error, pero al inicio de la aplicación creamos, mediante código en el que indicamos la contraseña, un recordset que se mantiene abierto toda la aplicación y, al quedar abierta la conexión con la BD protegida, es innecesario indicarle de nuevo la contraseña, por lo que podemos abrir las tablas vinculadas.
Ocurre algo parecido cuando utilizamos conexiones ODBC, que la contraseña se guarda y queda accesible, y la solución es la misma, no guardar la conexión con contraseña, abrir una conexión mediante código y mantenerla abierta durante toda la aplicación. En http://blogs.office.com/b/microsoft-access/archive/2011/04/08/power-tip-improve-the-security-of-database-connections.aspx, otra vez en guiri, nos cuentan cómo hacerlo.
El código puede hacerse inaccesible, por ejemplo, convirtiendo la aplicación en ACCDE y/o protegiendo a su vez, previamente, el proyecto VBA con otra contraseña. De esta manera, las tablas sólo se pueden abrir desde nuestra aplicación y, desde ella, controlamos quién y cómo puede acceder a los datos. Cualquiera podría importar nuestras tablas vinculadas desde otra BD, pero no sabiendo la contraseña, no le serviría de nada. También podría, si es un usuario autorizado, abrir directamente a las tablas de nuestra aplicación y saltarse así los permisos que damos mediante código, pero eso también podemos evitarlo, por ejemplo, comprobando que la aplicación se ejecuta en modo runtime justo antes de abrir el recordset que proporciana la clave al resto de la aplicación y, cuando sepamos asegurar los datos con macros de datos, ni siquiera podrán modicar nada sin permiso, aunque accedan a las tablas.
En resumen, los pasos para proteger nuestro back-end de una forma muy sencilla serían los siguientes:
1º- Vincular las tablas del back-end antes de cifrarlo con contraseña (de esa manera la contraseña no se guardará en la propiedad Connect)
2º - Cifrar con contraseña el back-end
 image


image
3º -  Al inicio de nuestra aplicación abrir un formulario invisible (o un módulo de clase) en el que asignaremos la contraseña mediante código, y que mantendrá abierta la conexión con el back-end durante toda la aplicación.
Este último punto puede parecer difícil, pero es sencillo haciéndolo de la siguiente manera:
  • Vinculamos una tabla con datos irrelevantes. Nos pedirá contraseña y se guardará, pero más tarde la borraremos. Como ya existiría esa misma tabla vinculada, se guardará con el mismo nombre y un ordinal, por ejemplo TablaTonta1.
image
  • A partir de la tabla recién vinculada, creamos el formulario con sus campos.
image
  • Cambiamos la propiedad “Origen del registro” del formulario para dejarla en blanco.
image
  • En el evento Load del formulario abrimos un recordset que tome los datos de la BD protegida y lo asignamos como recordset del formulario.

Formatos

Formato de archivoExtensión
Proyecto Access protegido.ade
Proyecto Access.adp
Plantilla de proyecto Access.adn
Base de datos Access (2007).accdb
Base de datos Access Runtime (2007).accdr
Plantilla de Base de datos Access virgen (2007).accdt
Base de datos Access (2003 y anterior).mdb
Base de datos Access, used for addins (2,95,97), previously used for workgroups (2)..mda
Plantilla de Base de datos Access (2003 y anterior).mdn
Access Add-in Data (2003 y anterior).mdt
Access Workgroup, database for user-level security..mdw
Access (SQL Server) detached database (2000).mdf
Protected Access Database, with compiled VBA (2003 y anterior).mde
Protected Access Database, with compiled VBA (2007).accde
Windows Shortcut: Access Macro.mam
Windows Shortcut: Access Query.maq
Windows Shortcut: Access Report.mar
Windows Shortcut: Access Table.mat
Windows Shortcut: Access Form

miércoles, 12 de octubre de 2011

Tipos de campos en una tabla

Texto:
Puede contener hasta 255 caracteres, aunque el tamaño predeterminado es de 50, pero se puede modificar en él cuadro tamaño del campo.
Memo:
Almacena grandes cantidades de texto, hasta 64.000 caracteres. Se suele utilizar para descripciones, evaluaciones, datos medios, historiales, etc.
Numérico:
Almacena datos numéricos distintos a moneda. Las fracciones admiten decimales y se insertan valores negativos con signo menos entre paréntesis. Para números con los que ni se realicen cálculos, como teléfono o códigos postales, conviene emplear el tipo texto.
Fecha/Hora:
La entrada de fechas y horas en este campo permite validar fechas y horas de modo automático y realizar cálculos basados en las entradas, como el número de días transcurridos entre fechas, etc.
Moneda:
Microsoft Access añade automáticamente un número fijo de dígitos a la derecha de la coma decimal, para evitar errores de redondeo, si se emplean campos numéricos para almacenar moneda.
Autonumérico:
Incrementa automáticamente un valor numérico para cada registro que se agregue. Si el primer registro vale 1, el siguiente valdrá 2 y el tercero 3 y así sucesivamente. En versiones anteriores de Access se llamaba campo contador. Es útil para numeración de socios de un club, de clientes de una empresa, de pedidos de fábrica, etc.
Sí/No:
Almacena valores lógicos. Durante la entrada de datos, los campos pueden contener Verdadero o Falso, Sí o No o 0 o1.
Objetos OLE:
Contienen datos creados con otras aplicaciones, como videos, sonidos, gráficos, etc.
Hipervínculo:
Vincula a un recurso de Internet, por ejemplo una dirección de página Web, si haces clic sobre la misma automáticamente te enlaza con dicha página.
Asistente de búsqueda
Permite restringir el tipo campo para que solamente acepte datos de una lista de valores o de un campo de otra tabla.

martes, 11 de octubre de 2011

tipos de objetos:

Una tabla es la unidad básica de almacenamiento de datos en una base de datos relacional que contiene normalmente una determinada categoría de cosas, como por ejemplo, empleados, clientes, etc.
La utilidad de la Consulta radica en poder seleccionar todos los registros de una base de datos que cumplan unas determinadas condiciones por nosotros mismos.
Los Formularios son muy útiles a la hora de introducir o mostrar los datos de un registro determinado de modo que la información perteneciente a este registro se vea de forma clara y sencilla.
Un informe se utiliza para presentar en una hoja impresa los datos relativos a un conjunto de registros.
Son objetos de Microsoft Access que le permitirán publicar sus datos de tablas o consultas como páginas Web, para que una vez situadas en un servidor de acceso a Internet, puedan ser consultadas.
Son objetos de Microsoft Access construidos a partir de instrucciones simples. Con las macros se podrán ejecutar una serie de operaciones habituales pulsando una simple tecla. Esto le permitirá ahorrar tiempo en la ejecución de operaciones repetitivas. Por ejemplo, una macro que abra la base de datos Empresa, abre el informe de los clientes que no hayan realizado un pedido en el último mes y realice un mailing a dichos clientes ofertando nuevos productos.
Los módulos son parte de un programa realizado en lenguaje Visual Basic. Es una función compleja que requiere amplios conocimientos de programación pero que permite personalizar la base de datos y realizar operaciones avanzadas

¿Qué es Access?

Microsoft Access es un sistema de gestor de base de datos relacionales para Windows. Es decir, un software que funciona bajo Windows y aprovechando las características y ventajas de dicho entorno gráfico, tiene por objeto la gestión de datos estructurados, con el fin de procesar y proporcionar la información precisa a los distintos usuarios del sistema. Por ejemplo, si su empresa se dedica a la venta de artículos de alimentación, con Access usted podrá organizar toda la información relativa a artículos, clientes, proveedores, facturas a cobrar y a pagar, datos de contabilidad, datos fiscales, control de stocks, etc. Una vez que usted organice e incorpore toda la información a una base de datos Access, podrá operar cómodamente para conocer en todo momento el estado de su negocio al instante y sin errores.
Access le proporciona herramientas que le permitirán hacer consultas para obtener exactamente la información deseada y en el formato que desea, bien sea un informe simple, o una tabla con apartados e información agrupada o clasificada por distintos conceptos. Usted sólo tendrá que mantener al día la base de datos incorporando las nuevas informaciones al sistema, por ejemplo cada vez que se efectúa un pedido, o cada vez que un cliente paga una cuenta pendiente. Y todo ello dentro del entorno gráfico de Microsoft Windows, que usted ya conoce y con el que se encuentra familiarizado.