Clipper/FiveWin - Como proteger Base de Datos

 
Vista:

Como proteger Base de Datos

Publicado por Humberto (27 intervenciones) el 11/07/2006 20:03:11
Tengo las bases de datos en un directorio desde el cual las jala el programa, pero si entra un intruso y las localiza podria modificandolas,borrandolas o dañarlas, existe alguna forma de protegerlas?
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Como proteger Base de Datos

Publicado por Antoni Masana (168 intervenciones) el 12/07/2006 07:50:52
Este es un problema de seguridad, tienes que poder restringuir el acceso a los intrusos mediante cuentas de usuario con contraseña u otros sistemas.
Cuanto mas cerrado sea el sistema para el usuario menos posibilidad tiene de que alguien lo manipule.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Como proteger Base de Datos

Publicado por Gabriel Pascual (913 intervenciones) el 13/07/2006 03:35:09
Existen varias formas de proteger tus bases de datos, te voy a exponer varias pero solo una es 100% segura.

Vamos a ir de la mas tonta a la mas compleja:

1) Cambiarle las extensiones a los archivos, en vez de que sean DBF, cambiale las extensiones por ejemplo DAT, FIL, etc.

2) Encripta los datos dentro del archivo DBF, es decir, cuando guardes algun dato haz:

REPLACE campo WITH Encripta (valor)

Y escribes la funcion Encritpa donde te armas algun algoritmo de encriptamiento, nota: FiveWin trae una funcion encripta.

Esta es un arma de 2 filos, porque la informacion se almacena encriptada en tu dbf pero para presentarsela al usuario deberas hacer el proceso inverso, es decir, desencriptar para presentarla en pantalla, y esto puede hacer tu aplicacion tremendamente lenta.

La pega que presenta esta solucion es que solo puedes aplicar el encriptamiento sobre campos cadena de caracteres, con lo cual olvidate de las fechas. numeros, logicos, etc.

3) "Corrupción controlada" de la base de datos, este truco funciona muy bien pero es dificil de implementar en programas que corren en red.

para empezar necesitamos entender como es por dentro un DBF, el DBF tiene una "cabecera" cuyo primer byte SIEMPRE es 03H o 38H, es 03H cuando el dbf no tiene campos memo y es 38H cuando tiene campos memo ( si quieren mas informacion sobre el tema lean este articulo : http://www.avemundi.com/software/articulos/20020503.htm)

Si mueves cualquier byte, te cargas la DBF, ya no se puede abrir ni con el mismo DBASE ni con excel, ni con nada, lo que tienes que hacer es, utilizando la funcion FOPEN() de Clipper, abri el archivo DBF, luego, con la funcion FWRITE() escribir CUALQUIER COSA distinta de 03H o de 38H en el primer byte y cerrar con FCLOSE(), con esto queda "dañanda" la DBF.

Entonces, cuando entras a tu programa, corres una rutina que "descorrompe" los datos y luego cuando terminas corres la rutina que los vuelve a corromper.

Esto es dificil de controlar en red, porque no siempre tienes las dbfs disponibles para "corromperlas", porque las tiene ocupadas otro usuario, asi que hay que implementar ciertos mecanismos de control para poder proteger las tablas

Continuo en un siguiente comentario, donde les voy a enseñar con que realmente pueden proteger los datos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Como proteger Base de Datos

Publicado por Gabriel Pascual (913 intervenciones) el 13/07/2006 03:50:47
Bien, la unica forma que yo he constatado que funcina con el tema de la proteccion de base de datos, es utilizando Advantage Database Server (www.ciber-tec.com/ads.htm).

No se espanten, que tampoco es necesario gastar dinero, porque ADS ofrece una alternativa GRATUITA para utilizar su producto hasta para 5 usuarios sin pagar un solo centavo. Pueden utilizar el "servidor local ADS", que funciona muy bien y es gratis

La desventaja es que esto solo esta disponbile si trabajan a 32 bits con Xailer, (x)Harbour, FiveWin Harbour, MiniGui, o Xbase++

Advantage Database Server, puede proteger sus bases de datos de 3 maneras:

1) Con un cambio del formato de base de datos. ADS maneja su propio formato de base de datos compatible con DBF llamado ADT, al igual que los DBFs los ADTs tienen indices , archivos .ADI y campos memo, archivos ADM, existen varias diferencias contra un DBF comun y corriente, pero en general, se manejan como si fueran DBFs, con los mismos comandos y funciones que utilizan en un DBF comun y corriente (USE , APPEND, REPLACE, EOF(), RLOCK(), etc). Este formato ADT solo puede ser abierto por su programa o bien por la herramienta DBU de Advantage llamad Advantage Data Architech.

2) La segunda forma es una de las mas interesantes y funciona estupendamente cuando trabajas en red. En un red convencional es necesario que las tablas DBF esten en una carpeta compartida del server con privilegios de lectura y escritura, en ADS NO, ADS tiene una funcion llamad AdsRightsCheck() que le da a tu programa ( y solo a tu programa) privilegios de acceso a todos los directorios del servidor, de tal forma que tus DBF (o ADTs) pueden ir en carpetas que no esten compartidas, con lo cual los usuarios desde los puestos remotos no pueden verlas ni tocarlas ni nada.

3) La tercera forma es por encriptamiento, ADS tiene un algoritmo de encriptamiento de 128 bits sumamente seguro, ademas de que ADS encripta TODOS los campos de la base de datos, sin importar el tipo de dato que sean, la ventaja contra esto, es que tu no tienes que hacer funciones de encriptameinto y desencriptamiento, ADS lo hace todo solito mediante la funcoine ADSEnableEncryption()
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Como proteger Base de Datos

Publicado por Alvaro (79 intervenciones) el 13/07/2006 12:31:03
"No se espanten, que tampoco es necesario gastar dinero, porque ADS ofrece una alternativa GRATUITA para utilizar su producto hasta para 5 usuarios sin pagar un solo centavo. Pueden utilizar el "servidor local ADS", que funciona muy bien y es gratis"

Gabriel,

Trabajando con xHarbour/FWH, en monopuesto: Que ficheros serían necesarios descargar y desde donde.

Trabajando con xHarbour/FWH, hasta 5 puestos: Que ficheros serían necesarios descargar y desde donde. ¿Seria necesario tener un servidor dedicado o es posible que una estación de trabajo haga de servidor?.

Gracias por todo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Como proteger Base de Datos

Publicado por Gabriel Pascual (913 intervenciones) el 13/07/2006 18:24:09
Para usar ADS con (x)Harbour modo consola y/o con cualquier GUI (Xailer, FW, VXH, MiniGui, etc) necesitas las siguientes DLLs:

El servidor local ADS : ADSLOC32.DLL
El cliente ADS: AXWCS32.DLL
La libreria de funciones ADS: ACE32.DLL

Que deben ir en la misma carpeta donde tienes el fichero EXE de tu programa.

Estos 3 dlls los puedes obtener instalando la herramienta de edicion de DBFs de Advantage, llamada Advantage Data Architech (ARC), que es gratuita, nuestros amigos de CiberTec te permiten bajarla desde aqui:

www.ciber-tec.d2g.com/ads/ver7/arc32.exe

Ademas es un excelente DBU, soporta ficheros DBFCDX, DBFNTX y los nativos de ADS, los ADT-ADI

Instala esta herramienta, y en la carpeta donde la instales, veras los DLLs necesarios. Copialos a la carpeta donde tienes tu EXE.

Bien, una vez ahi tenemos que hacer lo siguiente:

1) Convertir la DLL ACE32.DLL en un ficherlo .LIB para linkarlo a nuestro exe, esto se hace mediante la herramienta del Borland C++ que viene incluida en la version gratuita llamada IMPLIB la sintaxis es la siguiente.

IMPLIB ACE32.DLL ACE32.LIB

y listo, tenemos la libreria lista para linkar a nuestro codigo fuente

2) Modficaciones al codigo fuente:

Tenemos que hacer algunas modificaciones para cambiar el RDD, basta con hacer lo sigiente en tu codigo:

********************
* Llamar al RDD *
********************
REQUEST _ADS

*************************************************
* Definir el RDDADS como predeterminado *
*************************************************
RddSetDefault("ADS")

**********************************************************************************************
* Establecer el tipo de servidor, ADS detecta cual es mejor tipo de servidor disponible y
* se conecta automaticamente a el
* 1 - Local
* 2 - Remoto
* 3 - Local ó remoto
* 4 - Internet
* 5- Internet ó local
* 6 - Remoto ó Internet
* 7 - Local ó Remoto ó Internet
***********************************************************************************************
AdsSetServerType(7)

**********************************************************************
*Establecer el tipo de ficheros de datos que queremos trabajar *
* 1 - DBF - NTX - DBT
* 2 - DBF - CDX - FPT
* 3 - ADI - ADT - ADM
***********************************************************************
AdsSetFileType(2)

Y listo a partir de aqui en tu programa todo es coser y cantar, los ficheros de datos se manejan igual que como estas acostumbrado. Adicionalmente puedes agregar las fucniones AdsRightsCheck(.F.) para acceder a carpetas no compratidas del servidor y
a la funcion AdsEnableEncryption() cada vez que hagas un USE fichero.dbf.

3) Para el linkado, deberas agregar 2 librerias mas la ACE32.LIB creada en el paso 1, y el RDDADS.LIB, esta ultima libreria NO VIENE CON EL (X)HARBOUR nativamente, es una contribución adicional, y se encuentra en la sección de CONTRIBUCIONES del proyecto, no tiene costo.

Y eso es todo, estas listo para utilizar ADS con tus programas de 32 bits, el servidor local ADSLOC32.DLL te soporta hasta 5 usuarios sin problema corriendo en una red que no necesita tener servidor dedicado, pero atencion el servidor local no tiene 2 importantes caracteristicas :

1. NO ES CLIENTE SERVIDOR, es decir, sigues expuesto a las corrupciones de indices y
2. NO SOPORTA TRANSACCIONES
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Como proteger Base de Datos

Publicado por Félix Díaz Gutiérrez (1 intervención) el 13/07/2008 20:07:16
Te agradesco tu comentario, muy interesante
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar