FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour Proteccion de DBF
Posts: 205
Joined: Wed Sep 02, 2009 03:11 AM
Proteccion de DBF
Posted: Tue Sep 29, 2009 01:44 PM

Hola amigos del foro:

Deseo una opinion de ustedes con relacion a lo siguiente:

Voy a distribuir un software que estara contenido en una memoria USB y me interesa que la informacion de las bases de datos este protejida.

Para despistar un poco he cambiado la extension de los archivos de DBF a otra cosa pero alguien con un poco de tiempo podria descubrirlo y abrir los arhivos facilmente.

He utilizado la funcion ENCRYPT() para encriptar algunos datos relevantes pero no desearia aplicarlo a todos los archivos ya que al momento de efectuar un mantenimiento de la informacion se tornaria muy tedioso.

La pregunta es que opinan sobre la funcion que les adjunto que permite asignarle una proteccion contra apertura a la base de datos ? Mi temor es que algo suceda y no pueda abrir el archivo protejido.

Algun comentario ?

Gracias

FUNCTION PROTEJE( nAction, cFile )

local nHandle   := 0
local cBuffer   := space( 32 )

DEFAULT nAction := 1

    nHandle   := FOpen( cFile, FO_READWRITE + FO_SHARED )

    if nHandle != -1
        if FRead( nHandle, @cBuffer, 32 ) == 32
            if nAction == 0     // Proteger
                if SubStr( cBuffer, 1, 1 ) <> Chr( 26 )
                    cBuffer := Chr( 26 ) + SubStr( cBuffer, 1, 31 )
                endif
            else                // Desproteger
                if SubStr( cBuffer, 1, 1 ) == Chr( 26 )
                    cBuffer := SubStr( cBuffer, 2, 31 ) + Chr( 0 )
                endif
            endif
            FSeek( nHandle, 0 )
            FWrite( nHandle, cBuffer, 32 )
        endif
        FClose( nHandle )
    endif

return( FError() )

Posts: 601
Joined: Wed Jul 04, 2007 03:51 PM
Re: Proteccion de DBF
Posted: Tue Sep 29, 2009 04:40 PM
Hola,
Si usas ADS, tienes la opci贸n de enciptar la tabla completa.
Y para desencriptarla desde tu programa s贸lo necesitas una l铆nea de c贸digo en la apertura.

Code (fw): Select all Collapse
USE CONFIGU ALIAS (cAlias) NEW
AdsEnableEncryption(cPassword)


Es muy sencillo y es lo 煤nico que tienes que agregar a tus aperturas de archivos.
Las tablas siguen siendo DBFs como siempre, solo que no se pueden abrir si no ingresas la clave de apertura.

Espero te sirva la sugerencia.
Saludos, Esteban.
Ojeda Esteban Eduardo.

Buenos Aires - Argentina.

FWH - PellesC - DBF/CDX - ADS - Gloriosos .Bat - MySql - C# .net - FastReport

Skype: jreduojeda
Posts: 205
Joined: Wed Sep 02, 2009 03:11 AM
Re: Proteccion de DBF
Posted: Thu Oct 01, 2009 03:36 AM

Si pero como el sistema sera distribuido y ejecutado desde una memoria USB no puedo usar ADS (o si ?)

Posts: 1380
Joined: Fri Oct 14, 2005 01:28 PM
Re: Proteccion de DBF
Posted: Thu Oct 01, 2009 11:33 AM
Resistencia - "Ciudad de las Esculturas"

Chaco - Argentina
Posts: 1088
Joined: Fri Oct 07, 2005 03:33 PM
Re: Proteccion de DBF
Posted: Thu Oct 01, 2009 11:49 AM

Hola,

puedes utilizar ADS en una memoria, usa ADS LOCAL (Son solo 2 DLL), incluso si utilizas ADD (Advantage Data Dictionary) no necesitaras mas que conectarte a la base de datos local y la parte de encryptacion es transparente una vez autenticado el usuario.

saludos

Marcelo

Posts: 205
Joined: Wed Sep 02, 2009 03:11 AM
Re: Proteccion de DBF
Posted: Thu Oct 01, 2009 12:47 PM

ADS local es gratis ?

Posts: 610
Joined: Wed Oct 19, 2005 08:20 PM
Re: Proteccion de DBF
Posted: Sun Mar 11, 2018 11:37 AM

Hola compa帽eros. Revivo este mensaje porque necesito proteger mis DBF,s y la opci贸n de ADS parece ser de lo mejor que hay.
驴Podr铆an ayudarme a implementarla ? Nunca he usado ADS y s贸lo la utilizar茅 para esto. Supongo que valdr铆a una versi贸n antigua y ligera. 驴Donde podr铆a conseguirla?

Un saludo,

Manuel



xH 1.2.3, FWH 23.07 32 bits, BC++ 7.4, xVerce CW 1.0, PellesC
Posts: 989
Joined: Thu Nov 24, 2005 03:01 PM
Re: Proteccion de DBF
Posted: Mon Mar 12, 2018 07:04 PM

Creo que el encriptado ADS no es superior al propio de las DBFs de Harbour, usando el

Use MiTabla
dBInfo( DBI_PASSWORD, 'miclavesupersecreta' )

con eso ya tienes lo mismo (creo), ya que ambos son a nivel de registro.

De todas maneras el algoritmo de encriptado es MUY SENCILLO en ambos casos, cualquiera con un poco de paciencia lo saca. Si lo vas a usar para que nadie te vea los datos en claro, por ejemplo para que no lo puedan abrir con WORD esta bien, pero si es informaci贸n sensible... No se si alcanza.

Un saludo

Saludos
Carlos Mora
http://harbouradvisor.blogspot.com/
StackOverflow http://stackoverflow.com/users/549761/carlos-mora
鈥淚f you think education is expensive, try ignorance"
Posts: 610
Joined: Wed Oct 19, 2005 08:20 PM
Re: Proteccion de DBF
Posted: Mon Mar 12, 2018 07:26 PM

Gracias por tu inter茅s, Carlos.
A nivel de campo de un registro con las funciones encript lo tengo claro y, de hecho, implementado en alg煤n programa.
Buscaba algo a nivel de fichero y sin tener que modificar mucho el c贸digo actual con la finalidad de cumplir con la nueva Ley de Protecci贸n de Datos.
Algo como encriptar el fichero al salir de aplicaci贸n y desencriptarlo al entrar, s贸lo eso.

Un saludo,

Manuel



xH 1.2.3, FWH 23.07 32 bits, BC++ 7.4, xVerce CW 1.0, PellesC
Posts: 8523
Joined: Tue Dec 20, 2005 07:36 PM
Re: Proteccion de DBF
Posted: Mon Mar 12, 2018 07:38 PM
Jo茫o Santos - S茫o Paulo - Brasil - Phone: +55(11)95150-7341
Posts: 1515
Joined: Thu Oct 30, 2008 02:37 PM
Re: Proteccion de DBF
Posted: Mon Mar 12, 2018 08:50 PM

El asunto del reglamento europeo de proteccion de datos y Harbour / Dbfs tiene su miga.

No nos vale con encriptar la cabecera de la dbf. Un excel, es posible que la abra porque no mira la cabecera.

El DBI_PASSWORD s贸lo encripta si la dbf no tiene campos memo.
Aun funcionando lo anterior, se nos quedan sin encriptar los fpt y los .cdx

As铆 que si nos cuelan un delegado de proteccion, que se me antoja que debe ser como un insecto de esos que pululan por las partes traseras del ganado, pues se podr铆a poner excelente y exigir encriptacion total.

Harbour no tiene bien solucionado el tema y no se mueve una brizna que empuje hacia ello.
Yo por mi parte puse un mensaje en la lista de Harbour: https://groups.google.com/forum/#!topic ... YnLBzKjuIk

Posts: 1283
Joined: Fri Feb 10, 2006 02:34 PM
Re: Proteccion de DBF
Posted: Tue Mar 13, 2018 03:28 PM

Buenas,

Para este escenario usad ads local, es lo mejor de largo. Y tranquilo q no la abren ni con excels ni nada.

Salutacions, saludos, regards

"...programar es f谩cil, hacer programas es dif铆cil..."

UT Page -> https://carles9000.github.io/
Forum UT -> https://discord.gg/bq8a9yGMWh
HIX -> https://github.com/carles9000/hix
Posts: 610
Joined: Wed Oct 19, 2005 08:20 PM
Re: Proteccion de DBF
Posted: Wed Mar 14, 2018 09:44 PM

Pues eso, 驴algunas lineas de c贸digo para implementar el apartado de encriptaci贸n de ADS ?

Un saludo,

Manuel



xH 1.2.3, FWH 23.07 32 bits, BC++ 7.4, xVerce CW 1.0, PellesC
Posts: 1283
Joined: Fri Feb 10, 2006 02:34 PM
Re: Proteccion de DBF
Posted: Thu Mar 15, 2018 06:21 PM
Manuel,

He buscado algun ejemplo que usaba en el baul de los recuerdos. Es antiguo pero lo he compilado y funciona bien.

Code (fw): Select all Collapse
/*--------------------------------------------------------------------------
聽 聽Autor 聽 聽 聽 聽 聽 : Carles Aubia 
聽 聽Fecha 聽 聽 聽 聽 聽 : 05.05.2011
聽 聽Description 聽 聽 : Ejemplo sencillo para testear ADS
聽 聽Version Harbour : Harbour 2.1.0 (Rev.14559)
聽 聽Version FWH 聽 聽 : 11.06
---------------------------------------------------------------------------*/
#include 'fivewin.ch'
#include 'ads.ch'

#define MY_KEY聽 'FWH'

REQUEST ADS

REQUEST ADSKeyNo
REQUEST AdsKeyCount
REQUEST AdsGetRelKeyPos
REQUEST AdsSetRelKeyPos

FUNCTION Main()

聽 聽 local cAlias
聽 聽 local cPass 聽:= MY_KEY 
聽 聽 local cError := ''

聽 聽 RddRegister("ADS",1)
聽 聽 RddSetDefault("ADSCDX")
聽 聽 
聽 聽 SET SERVER LOCAL 聽 聽 聽 聽 聽

聽 聽 USE Test NEW 
聽 聽 cAlias := Alias()
聽 聽 
聽 聽 MsgInfo( AdsVersion(), 'Version ADS' )
聽 聽 MsgInfo( (cAlias)->( RddName() ), 'RDD' )
聽 聽 
聽 聽 if ( cAlias )->( ADSIsTableEncrypted() )聽 聽 聽 聽 
聽 聽 
聽 聽 聽 聽 MsgInfo( 'Tabla Encriptada. Pido password' )
聽 聽 
聽 聽 聽 聽 if ( MsgGet( 'Password', 'Clau', @cPass ) )
聽 聽 
聽 聽 聽 聽 聽 聽 聽If (cAlias)->( ADSEnableEncryption( cPass ) ) 聽> 0
聽 聽 聽 聽 聽 聽 聽 聽 聽AdsGetLastError( @cError )
聽 聽 聽 聽 聽 聽 聽 聽 聽MsgInfo( cError )
聽 聽 聽 聽 聽 聽 聽 聽 聽QUIT
聽 聽 聽 聽 聽 聽 endif

聽 聽 聽 聽 endif
聽 聽 聽 聽 
聽 聽 else

聽 聽 聽 聽 MsgInfo( 'Tabla Desencriptada. La voy a encriptar' )
聽 聽 聽 聽 聽
聽 聽 聽 聽 (cAlias)->( ADSEnableEncryption( MY_KEY ) ) 
聽 聽 聽 聽 (cAlias)->( ADSEncryptTable() ) 

聽 聽 endif
聽 聽 
聽 聽 MsgInfo( (cAlias)->( AdsIsEncryptionEnabled() ), 'Encriptacion activada ?' )
聽 聽 
聽 聽 if ( ( cAlias )->( AdsIsTableEncrypted() ) .AND. (cAlias)->( AdsIsEncryptionEnabled() ) )
聽 聽 
聽 聽 聽 聽 (cAlias)->( XBrowse() )聽聽 聽 聽 聽 聽 聽 
聽 聽 聽 聽 
聽 聽 endif

RETU NIL


Te aconsejo que busques si quieres usar ads la utilidad arc32 que es el dbu propio de ads, las librerias actualizadas, ...

Cuando consigas compilarlo ya veras que es lo mejor para lo que tu quieres.

Saludetes.
C.
Salutacions, saludos, regards

"...programar es f谩cil, hacer programas es dif铆cil..."

UT Page -> https://carles9000.github.io/
Forum UT -> https://discord.gg/bq8a9yGMWh
HIX -> https://github.com/carles9000/hix
Posts: 610
Joined: Wed Oct 19, 2005 08:20 PM
Re: Proteccion de DBF
Posted: Thu Mar 15, 2018 09:09 PM

Carles,
much铆simas gracias. 隆 No sabes cuanto te lo agradezco !
Ya tengo algo por donde empezar.

Un saludo,

Manuel



xH 1.2.3, FWH 23.07 32 bits, BC++ 7.4, xVerce CW 1.0, PellesC