Seguridad en vfp

HOla expertos, resulta que desde hace algún tiempo estoy probando hacer aplicaciones cliente servidor con VFP.
Dado que para trabajar con datos del servidor uso vistas remotas. Mantengo un archivo de DBC, donde están almacenadas la definición de mis vistas y conexiones.
El problema es que las conexiones que almacena la base de datos, muestra el usuario y el password. Y esto podría ser un peligro, pues cualquier persona malintencionada, podría ent rar en la PC, del usuario instalar
VFP, abrir la base de datos y ver los datos de la conexión.
He intentado trabajar sin estas conexiones almacenadas, y creando y destruyendo conexiones en tiempo de ejecución, sin embargo este método no es seguro ya que el programa opdria colgarse y dejar la conexión creada sin borrarla, ademas que las vistas necesitan una conexión pre existente para poder funcionar.
¿Expertos por favor ayúdenme que puedo hacer?

1 respuesta

Respuesta
1
Bueno para lo que tu quieres hacer puedes usar varias alternativas como usar dll, ocx, fll, archivos txt
Hay varias alternativas, la alternativa que te propongo es más sencilla
Primero
Tiene que crear una tabla que esta fuera del proyecto (fuera del entrono de datos)te recomendaría que la guardes en otra carpeta que no se a la carpeta del proyecto por ejemplo \WINDOWS\system32, otra \Archivos de programa\carpeta
Es decisión tuya continuemos
La tabla debe tener la siguiente esctrutura
Tabla
Id_tab entero 4 identificador
Des_tab carácter 35 descripción puedes guardar el
Nombre del pc si es que tienes
Diferentes conexiones
act_tab memo 4 guardamos la conexión en código
Por ejemplo
DECLARE Integer SQLConfigDataSource in odbccp32.dll;
Integer, Integer, String, String
#DEFINE ODBC_ADD_DSN 1
hwndParent = 0
fRequest = ODBC_ADD_DSN
lpszDriver = ?MySQL ODBC 3.51 Driver?
lpszAttributes = ?DSN=ConexionVFPMySQL? + CHR(0) +;
?Description=Conexión con MySQL usando ODBC? + CHR(0) +;
?DATABASE=mysql? + CHR(0) +;
?SERVER=localhost? + CHR(0) +;
?UID=root? + CHR(0) +;
?PWD=password?
LOCAL lRet
lRet = SQLConfigDataSource(hwndParent, fRequest,;
lpszDriver, lpszAttributes)
IF lRet > 0 THEN
??DSN creado!!?
ELSE
? ¿Error al crear?
Endif
Ese código lo guardamos en le campo memo
Para que nadie vea la cadena de conexión puedes incriptar el memo.
Para que llames el procedimiento o el código que esta en el memo ases lo siguiente.
Por ejemplo
Procedimientos para corre la conexión
LOCAL lcAction
IF !DEBUGMODE
lcAction = this.GetStartupAction()
IF !EMPTY(lcAction)
&lcAction
ENDIF
ENDIF
Procedimiento GetStartupAction
LOCAL lnOldArea, lcAction, llCloseWhenDone
lnOldArea = SELECT()
IF !USED("tabla")
USE tabla IN 0
llCloseWhenDone = .T.
ENDIF
SELECT tabla
lcAction = LOOKUP(act_tab, des_tab, "DESCRIP") && DESCRIP es el nombre del
&&índice index
IF llCloseWhenDone
USE IN tabla
ENDIF
SELECT (lnOldArea)
RETURN lcAction
Bueno espero que sea de ulilidad disculpa por no responder rapido el trabajo tu sabes
Cualquier duda me escribes
Atentamente. Fitocava
Mi correo de Hotmail es [email protected]
Gracias amigo, esperaba encontrar una técnica más formal, es decir no recurrir a un artificio. Es lamentable saber como Microsoft a descuidado tanto a su producto. Es en realidad un serio impedimento, ahora se porque no se desarrollan aplicaciones corporativas en VFP. Bueno tan solo em queda aprender otros lenguajes mucho más seguros y escalables como JAVA o EIFFELL.
Explicame un poco más para poder ayudaerte
Atentamente. Fitocava

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas