![]() |
Como proteger mis archivos para que no se modifiquen con otro programa externo
Hola a todos
Quisiera saber como puedo proteger los archivos que me sirven de complemento a mi programa, para que no sean modificados por una aplicacion externa, es decir, que solo puedan ser modificados por mi programa. Los archivos de mi aplicacion son: un .mdb, un .zip, dos .csv y uno Tipo File of record Lo que no quiero es que, por ejemplo, me abran el (.zip) con el winzip o winrar y lo modifiquen. Quiero hacerle algo para que estos programas no lo reconozcan como archivo .zip, y den un error si intentan abrirlo. (Yo hago el .zip con mi propio programa, con un componente de Delphi). Y hacer lo mismo con los demas para que no sean reconocidos por sus respectivas aplicaciones (Access, Bloc de Notas, etc.), solo por mi programa. Espero que esto sea posible hacerse, o si no, que metodo seria bueno para lo que quiero :confused: |
Lo primero que puedes hacer es cambiarles la extensión y ver si te funcionan. Eso dependerá de cómo los estés accediendo.
Por ejemplo, ADO si no recuerdo mal, permite acceder a ficheros MDB, aunque les hayas cambiado la extensión. Así pues si a tu Base de Datos MDB le colocas extensión .DWG (pr decir una) y configuras el ADOConexion la abrirá sin problemas. Dependiendo del sistema/componente que uses para los ZIP, podrás hacer algo similar. Es un primer paso. Lo siguiente es proteger los ficheros utilizando las herramientas de cada uno. En este caso puedes utilizar password para ambos casos (tanto MDB como ZIP). En el caso de los MDB aun puedes probar la opción de encriptación de la Base de Datos. Aunque ahora no recuerdo si es propia de Access o la soporta también ADO. A partir de ahí podrías añadir encriptación propia; Pueder ser fácil con algun tipo de ficheros, pero con otros puede ser muy engorrosa. Todo depende del nivel de "seguridad" que necesites. Por último si todo esto te queda corta, tal vez sea necesario que te plantees cambiar a tipos de ficheros que de por sí, te ofrezcan más seguridad. En el caso de la Base de Datos está claro que puedes "saltar" a un SGBD (FB embebded, por ejemplo), en el resto habría que evaluarlo para cada caso. Un saludo. |
Hola,
podrias, simplemente, usar otras extensiones desconocidas (.aln, .ut, ...). Si quieres mas proteccion, entonces deberias "desformatearlos" : poner datos inservibles en ellos de tal manera que sus aplicaciones no lo pudieran leer (por ejemplo, bloques aleatorio en ciertas posiciones fijas, los cuales tu sabes la posicion y longitud). Si haces eso, ten en cuenta que los componentes que se usan en delphi buscaran el formato original, por lo que deberias, al abrir tu aplicacion, eliminar estos bloques, y al salir, volverlos a escribir. Otra manera seria usando las propiedades de proteccion de estos tipos de archivo (menos el .csv) : usando login / password en la base de datos, que solo lo "conoceria" tu programa, y lo mismo con el .zip. Otros trucos pueden ser que tu aplicacion guarde la ultima fecha de modificacion y longitud de estos ficheros, y si se modifican externamente, cambiando estos requisitos, se dice que estan corrompidos y no se abren. Tambien por eso deben haber componentes de encriptacion, que supongo que encriptaran al salir del programa y desencriptaran al abrirlo. |
vaya neftali...te volviste a adelantar XD
|
Cita:
No debe ser mala la respuesta cuando los dos andábamos "dando tiros al mismo árbol..." :D:D:D |
Ya habia pensado en lo de cambiar las extensiones, pero si al mdb le das abrir con... access, se abre sin problemas. Tambien hay formas de burlar las contraseñas de access.
El nivel de seguridad que deseo debe ser el mayor posible, pues la aplicación es para el control del inventario de las PC con todos sus componentes internos, para evitar fraudes. Y los usuarios finales son informaticos, y saben como violar la seguridad de access. Se me ocurrio la idea de insertar un bloque de datos al principio para hacerlo ilegible al access, y despues quitarlo cuando mi aplicación lo vaya a usar, Pero no se como hacerlo, ni si se puede hacer :confused: |
Cita:
http://www.clubdelphi.com/foros/show...9&postcount=88 Por otro lado lo mejor es la encriptación: http://delphi.jmrds.com/?q=node/31 O incluso un hash (md5 o sha1): http://delphi.jmrds.com/?q=node/36 |
Hola de nuevo, otra manera seria colocando tu base de datos en un servidor externo el cual solo permitiese acceso a tu programa.
|
Cita:
En serio, deberías plantarte cambiar los MDB por otro SGBD. FB por ejemplo te brindará la seguridad que necesitas. Cita:
|
Seoane
Muy original el truquito del disfraz del sombrero, de verdad que esta "elegante" esa forma de ''esconder'' un archivo Probe el metodo de encriptacion que me propones y me funcionó perfectamente, lo voy a usar hasta que pueda cambiar de SGBD como me sugiere Neftali. Con respecto a lo del hash, pudieras decirme que es el hash? (o será necesario abrir otro hilo para ese tema) Coso No puedo usar un servidor externo, pues no siempre se va a usar en una red Neftali Se que los mdb son bastantes inseguros, pero es el que, hasta ahora, me es mas facil trabajar (respecto a hacer relaciones y crear las consultas). Nunca he trabajado FB, me haria falta aprenderlo (e instalarlo por supuesto, no lo tengo), sabes de algun manual o tutorial? He probado con Paradox, pero cuando ejecuto mi programa en una PC sin Delphi, me da error del BDE (ya puse un hilo preguntando eso), si puedes dime que hacer con ese error Con respecto a la encriptacion (mientras aprenda FB o solucione lo del error de Paradox y el BDE), lo que pienso hacer es: copiar mi BD desencriptada y "vulnerable" oculta en algun lugar del disco, y al cerrar la aplicacion la encripto y la devuelvo a su lugar |
Cita:
Cita:
La mejor forma de usar esto en tu caso es calcular el hash de los archivos que quieres proteger cada vez que los modifiques y guardarlo en lugar seguro (cifrandolo si es necesario), luego cada vez que vayas a usar la información solo tienes que volver a calcular el hash y comprobar que es igual que que tienes guardado. |
La franja horaria es GMT +2. Ahora son las 18:47:37. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi