¿Ayuda para proteger base de datos de visual fox?

653 views
Skip to first unread message

alexfox

unread,
May 19, 2009, 11:17:50 AM5/19/09
to Mundo Visual FoxPro
Hola amigos del foro.

Nuevamente me dirijo a usetdes con una inquietdud que me ha surgido
durante el desarrollo de una aplicacion, y es la siguiente:

Quisiera saber si es posible proteger una base de datos de visual fox
pro (yo manejo la version 6), para que no pueda ser accesada por un
usuario fuera de la aplicacion, es decir dentro de la aplicacion ya se
establecieron nombres de usuarios y privilegios, pero no quiero que un
usuario externo al sistema pueda acceder a visualizar o peor aun
modificar mis tablas ya sea con el uso de vfp o sin el.

No se si exista alguna forma de proteger el acceso a la base de datos
mediante alguna contraseña o algo por el estilo, espero me puedan
solucionar la duda que tengo o me puedan orientar para resolverla.

Saludos y de antemano gracias por la ayuda.

clabri

unread,
May 19, 2009, 12:34:54 PM5/19/09
to Mundo Visual FoxPro
HOLA, TE ACONSEJO QUE DEBES USAR UN MOTOR DE BASE DE DATOS
EN ESTE FORO HAY MUY BUENA DOCUMENTACION AL RESPECTO
ESO SI, TE IMPLICARA MODIFICAR TU APLICACION
SI BIEN LLEVA TODO SU TIEMPO, PERO TE EVITARAS MUCHOS DOLORES DE
CABEZA
SUERTE
AGUANTE NUESTRO ZORRO

Carlos Miguel FARIAS

unread,
May 19, 2009, 3:30:58 PM5/19/09
to mundovis...@googlegroups.com
Evidentemente, deberás recurrir a un SGBD (mysql, postgres, sqlserver, etc.) para lograr un nivel de protección adecuado.
Otra manera sería encriptar los datos, pero es un proceso engorroso.
Si te conformas con que los datos no puedan ser modificados, o se detecte que se modificaron, podes agregar un campo en las tablas de datos criticos, dicho campo debería contener un checksum de los datos del registro (en VFP 8 y posteriores, ya está disponible una función especifica). Para hacer el cheksum concatenas todos los campos convertidos en alfanumericos y le aplicas la función sys(2007), que te genera un checksum.
Si el que accede no sabe como concatenastes los campos, no podrá modificar nada sin que lo detectes (bueno, de casualidad si, pero no es tan facil).
Otra cosa que deberás hacer para asegurar los datos es convertir todos los importes en monetario, los datos numericos en enteros (y si no alcanza el lugar, en monetarios), las fechas convertilas a datetime (ocupa lo mismo y es mas rápido).
Esto último evita que te puedan editar las tablas directamente con editor de textos potentes, y no lograran un acceso tan facil desde excel u otras herramientas que permiten acceder a dbf.
Saludos: MIguel

Marlon Cabrera

unread,
May 19, 2009, 5:37:33 PM5/19/09
to mundovis...@googlegroups.com

matrix.si

unread,
May 19, 2009, 11:12:45 PM5/19/09
to mundovis...@googlegroups.com
Hola amigo
Yo tuve que instalar un sistema en un lugar donde sabia que intentarian modificarme las tablas y lo solucione asi:

Arme una base de datos llamada foxcfg.dat
Ahi adentro puse todas mis tablas libres
Luego entre a las propiedades de la base de datos busque la llamada BeforeOpenTable
Luego le di click en Edit Code

hay puse el sig.codigo

PROCEDURE dbc_BeforeOpenTable(cTableName)
*Just before a table or view is opened. Return .F. to prevent table or view being opened.
IF _calcmem=1
RETURN .t.
ELSE
RETURN .f.
endif
ENDPROC

como la variable de memoria _calcmem siempre esta en 0 (salvo que uses la calculadora y la pongas en uno) no la pueden abrir
Solo yo al inicializar el sistema la pongo en uno

Una solucion medio rebuscada pero hace 2 años funciona

Ahh cierto..lo hize con fox9
Reply all
Reply to author
Forward
0 new messages