Es Posible Ponerle Contraseña A Una Base De Datos Sqlite?


Goto page 1, 2  Next

Subject: Es Posible Ponerle Contraseña A Una Base De Datos Sqlite?
bueno eso amigos... es posible proteger el contenido de una base de datos Sqlite? que sólo mi programa en gambas pueda entrar con un user y pass previamente configurado?... de no ser así existe otra alternativa a Sqlite que me pueda dar ese grado de seguridad?

saludos!

Subject: Re: Es Posible Ponerle Contraseña A Una Base De Datos Sqlite?
DEATH:
Lo bueno que tiene Sqlite, es que realmente es un uínico archivo, donde estan almacenados las tablas y datos.

Puedes usar el comando "gpg" , para encriptar y desencriptar, mirate este enlace:
http://www.paulbernal.com/general/c...hivos-en-linux/

Saludos

Subject: Re: Es Posible Ponerle Contraseña A Una Base De Datos Sqlite?
muchas gracias por la respuesta... investigaré sobre el uso de este medio a través de gambas ya que a la primera no se me ocurre como, pero apenas tenga un método de cómo trabajarlo con gambas lo estaré publicando...

saludos!

Subject: Re: Es Posible Ponerle Contraseña A Una Base De Datos Sqlite?
También puedes usar otro gestor de base de datos como mysql que sí te permite esa funcionalidad.
Saludos

Subject: Re: Es Posible Ponerle Contraseña A Una Base De Datos Sqlite?
Si lo pensé pero eso me demanda a tener otro soft instalado para que funcione mi soft. además no necesito una gran motor de base de datos ya que las transacciones que hago son pocas y super simples.
gracias de todas maneras

Subject: Re: Es Posible Ponerle Contraseña A Una Base De Datos Sqlite?
jsbsan estuve intentando con el método que me nombras pero creo que no es la solución que busco, a lo menos que a mi no se me ocurra como hacerlo.
La idea de encriptar esta buenísima pero necesito constantemente obtener información de la base de datos y por lo tanto necesitaría desencriptar e incriptar constantemente, pero ese no es el problema, el asunto es que intenté desencriptar con EXEC pero me me aparece una ventana emergente para introducir la contraseña del archivo, entonces comprenderás que no puedo estar preguntándole al usuario la contraseña a cada rato, menos decirle al usuario cual es el password. Ahora si existe el modo de poder hacerlo de forma oculta que el usuario no se entere sería ideal.

He estado buscando información sobre otros motores de bases de datos que sean similares a Sqlite pero que tengan la capacidad de dar seguridad de acceso, pero no he tenido hasta ahora buenos resultados.

si alguien sabe de alguna solución lo agradecería mucho, mientras tanto sigo buscando.

Subject: Re: Es Posible Ponerle Contraseña A Una Base De Datos Sqlite?
DEATH:

Citar:
necesito constantemente obtener información de la base de datos y por lo tanto necesitaría desencriptar e incriptar constantemente

Vale, lo suyo es :

1º Cuando el programa arranca,desencriptar la base de datos "original" y te pedira la clave una sola vez
2º haces una "copia" de la base de datos ya desencriptada en otra carpeta por ejemplo la temporal (\tmp)
3º El programa trabaja con esa copia de la base de datos (el usuario hace accesos, añade registros, borra registros...), en la base de datos "copia"
4º Cuando termina la ejecucion del programa (finaliza el programa o se cierra), lo ultimo que hace es borrar la base de datos "original", y copia la que esta en la carpeta temporal y la encripta.

Inconvieniente que tiene: si se produce un fallo de luz, o un error en programa, no se realizaria el paso 4, y se perderian los datos que hubiera introducido el usuario en la sección.

Ahora si no te vale que te pida la clave una sola vez, no creo que puedas usar gpg..

Se me ocurre, que podrias hacer un método para encriptar la información... por ejemplo usando base64 (Enlace a gambasdoc), cuando guardes un registro, la cadena de texto las guarde con la funcion de base64, y cuando leas un registro, usas la funcion unbase64 (Enlace ).

Asi cualquiera que abriera el archivo de Sqlite (desde un visor, por ejemplo), no entenderia nada...

Creo que en el foro se habló hace tiempo de formas de encriptar datos... (mirate la opcion del foro de buscar, a ver que encuentras)

Last edited by jsbsan on Friday, 14 December 2012, 17:23; edited 1 time in total
Subject: Re: Es Posible Ponerle Contraseña A Una Base De Datos Sqlite?
jsbsan escribió: [Ver mensaje]
DEATH:

Citar:
necesito constantemente obtener información de la base de datos y por lo tanto necesitaría desencriptar e incriptar constantemente

Vale, lo suyo es :

1º Cuando el programa arranca,desencriptar la base de datos "original" y te pedira la clave una sola vez
2º haces una "copia" de la base de datos ya desencriptada en otra carpeta por ejemplo la temporal (\tmp)
3º El programa trabaja con esa copia de la base de datos (el usuario hace accesos, añade registros, borra registros...), en la base de datos "copia"
4º Cuando termina la ejecucion del programa (finaliza el programa o se cierra), lo ultimo que hace es borrar la base de datos "original", y copia la que esta en la carpeta temporal y la encripta.

Inconvieniente que tiene: si se produce un fallo de luz, o un error en programa, no se realizaria el paso 4, y se perderian los datos que hubiera introducido el usuario en la sección.

Ahora si no te vale que te pida la clave una sola vez, no creo que puedas usar gpg..

Se me ocurre, que podrias hacer un método para encriptar la información... por ejemplo usando base64 (Enlace a gambasdoc), cuando guardes un registro, la cadena de texto las guarde con la funcion de base64, y cuando leas un registro, usas la funcion unbase64 (Enlace ).

Asi cualquiera que abriera el archivo de Sqlite (desde un visor, por ejemplo), no entenderia nada...

Creo que en el foro se habló hace tiempo de formas de encriptar datos... (mirate la opcion del foro de buscar, a ver que encuentras)


Se me ocurre hacer una sentencia para arreglar: "Inconvieniente que tiene: si se produce un fallo de luz, o un error en programa, no se realizaria el paso 4, y se perderian los datos que hubiera introducido el usuario en la sección."

Crear un archivo de texto, s que tenga la palabras "TRUE" O "FALSE" y jugar con esto para que cuando inicie el soft copie la base de datos al lugar donde va la original. si fue copiado es TRUE, si no fue copiado por que sucedió un fallo de luz etc etc, al ver el programa que en susodicho archivo existe FALSE automáticamente haría el remplazo.

Subject: Re: Es Posible Ponerle Contraseña A Una Base De Datos Sqlite?
solución!

jsbsan --- la verdad es que no me vale la idea que me pida la contraseña una vez, ya que eso me obliga a revelar la pass al usuario, y tampoco me gusta la idea de mantener todo el rato la conexión a la base de datos sólo para que no vuelva a pedir la contraseña, pero además si necesitara modificar la base de datos luego para volver a encriptarla habría que volver a ingresar la contraseña.

Trabajar con base64 en el ingreso de la info a la base de datos la verdad es que no me gusta la idea...



bueno...estudié bastante y di con la solución a mi problema, es muy posible que alguien le pase o le pasará lo mismo así que aquí esta:

Resulta que la idea de jsbsan de usar gpg es muy buena para encriptar mi base de datos Sqlite, pero el problema es que si quiero que mi programa en gambas encripte o desencripte mi base de datos, al momento de mandarle el comando correspondiente por medio de EXEC o SHELL (gpg -c archivo.txt para encriptar y gpg archivo.txt.gpg para desencriptar), aparece una ventanita en el cual me pide la contraseña para cualquiera de los dos eventos, entonces esto obliga a que el usuario tenga en su conocimiento el password y por ende no sirve de nada tener encriptada la base de datos.
Al ver este problema pensé en deshacer la idea de usar GPG y buscar alguna alternativa de base de datos que me pudiera brindar la seguridad de un user y pass, obviamente hay varios motores de BBDD que brinda esto pero son aplicaciones muy grandes para el trabajo que tendrá mi programa, además si quisiera ocupar Mysql o Postgree, me condiciona a que el usuario tenga instalado en su máquina estos motores de base de datos, pero como dije anteriormente, son muy grandes para el trabajo que tendrá mi aplicación y además estoy dependiendo de la instalación de otro software.

La solución la encontré con el mismo GPG enviándole la contraseña por medio del mismo comando y que éste la lea y así poder trabajar de forma interna la encriptación y desencriptación.
Los comandos son los siguientes:

Encriptar
Shell ("echo contraseña | gpg -c --passphrase-fd 0 prueba.txt") Wait


Desencriptar
Shell ("echo contraseña | gpg --passphrase-fd 0 prueba.txt.gpg") Wait



viendo el ejemplo para encriptar primero mando la contraseña, luego ejecuto el comando gpg, -c significa que haremos una encriptación simétrica el cual no requiere de llaves públicas ni privadas ya que en ese caso sería asimétrica, pero yo necesito que sea simétrica, luego viene con --passphrase-fd 0 aquí le estamos diciendo que lea la contraseña que le estoy enviando y luego aludo al archivo a encriptar (archivo.txt) y listo. De este modo puedo encriptar y desencriptar con gambas y GPG de forma interna sin necesidad que el usuario introduzca una contraseña

bueno espero que a alguien más le sirva y gracias a todos por ayudar.

Subject: Re: Es Posible Ponerle Contraseña A Una Base De Datos Sqlite?
SQLITE normalmente lo uso para pruebas, pero en mi caso no es recomendable ni siquiera para pequeños datos porque como vas a hacer cuando se lo vayas a instalar a en otra maquina a alguien tendrías dolores de cabeza definiéndoles rutas y fuera de eso si te roban la base de datos en cambio con mysql podrá ser tedioso pero posees muchas funcionalidad aparte de protección llegas al rango de usarlo en forma remota

Goto page 1, 2  Next

Page 1 of 2


  
You cannot post new topics
You cannot reply to topics
You cannot edit your posts
You cannot delete your posts
You cannot vote in polls
You cannot attach files
You can download files
You cannot post calendar events

   

This is a "Lo-Fi" version of our main content. To view the full version with more information, formatting and images, please click here.

Powered by Icy Phoenix based on phpBB
Design by DiDiDaDo

Generation Time: 0.1028s (PHP: -25% SQL: 125%)
SQL queries: 24 - Debug Off - GZIP Enabled