TODOPIC

Lenguajes de programación para PC => C, C#, C++ => Mensaje iniciado por: micro_pepe en 14 de Mayo de 2014, 15:15:51

Título: Fichero oculto o permiso borrado denegado en C#
Publicado por: micro_pepe en 14 de Mayo de 2014, 15:15:51
Estoy haciendo una aplicación en C# que gestiona una base de datos local, la BD tiene contraseña, y quisiera que al iniciar la aplicación se conecte a la BD automaticamente sin tener que teclear la contraseña, pero ofrecer la posibilidad de cambiarla.

La solución que se me ocurre es codificarla en MD5 en un fichero, y que este fichero no se pueda borrar o ver por un usuario malintencionado ¿se puede hacer esto desde C#?

Saludos!!
Título: Re: Fichero oculto o permiso borrado denegado en C#
Publicado por: MerLiNz en 14 de Mayo de 2014, 15:22:45
La podria ver de todas formas, tu idea es que luego la lea del fichero descodificarla y desde el programa C# la envie para identificarse no? Simplemente con un sniffer podria averiguarla.

Yo lo haria dando permisos a la base de dato con acceso limitado, asi el usuario solo podra ver lo que tu quieras segun sus permisos. Aunque averigue la contraseña solo podra ver los datos publicos.
Título: Re: Fichero oculto o permiso borrado denegado en C#
Publicado por: micro_pepe en 14 de Mayo de 2014, 17:10:34
Sí, pero la idea es que al arrancar la aplicación la contraseña de la base de datos se introduzca de forma automatica, y por lo tanto tiene que estar almacenada en algun sitio, que no puede ser la propia base de datos porque tengo que acceder primero para leerla... podría ser otra base de datos, pero alguien podria borrarla...

no sé si me esplico.

Gracias. Un saludo!
Título: Re: Fichero oculto o permiso borrado denegado en C#
Publicado por: BrunoF en 14 de Mayo de 2014, 20:39:46
El MD5 es un algoritmo de encriptación que fue diseñado para no ser para nada fácilmente desencriptable. Es decir que si almacenas el MD5 resultante de la contraseña, no vas a poder desencriptarla para poder ingresarla automáticamente.

Es ampliamente utilizado e incluso el motor de este foro la utiliza, pero siempre hace falta que el usuario o alguien/algo ingrese la contraseña "cruda", luego de someterla al algoritmo se procede a comparar el MD5 generado por la palabra ingresada y el almacenado en la BD. Si coinciden, entonces se asume que la contraseña es correcta. Es una manera bastante segura de poder comparar una contraseña con una palabra ingresada, sin siquiera que quienes tienen acceso a la BD puedan saber las contraseñas.

Se han demostrado colisiones de hash para el MD5, lo que la hace vulnerable a ataques y obviamente permitiendo entonces que más de una palabra pueda generar el mísmo MD5 (pasa de ser una función biyectiva a ser sobreyectiva no inyectiva).

Saludos.
Título: Re: Fichero oculto o permiso borrado denegado en C#
Publicado por: MerLiNz en 15 de Mayo de 2014, 06:42:48
El caso bruno, es que si encriptas una contraseña y necesitas introducirla nativamente luego tendras que desencriptarla y enviarla, por lo cual al desencriptarla ya tienes la clave ahi a disposicion de que cualquiera la lea, incluso, al ser una base de datos se comunica por tcp y con un sniffer ves los paquetes, desconozco si existe una forma de enviar la clave encriptada y que el servidor la desencripte pero creo que no es posible.

Porque no almacenar la clave simplemente en una const del propio programa??
Título: Re: Fichero oculto o permiso borrado denegado en C#
Publicado por: micro_pepe en 15 de Mayo de 2014, 15:15:11
Porque no almacenar la clave simplemente en una const del propio programa??

Eso voy ha hacer, no se puede cambiar, pero tampoco creo que es muy interesante.

Saludos!
Título: Re: Fichero oculto o permiso borrado denegado en C#
Publicado por: MerLiNz en 15 de Mayo de 2014, 15:44:30
Lo puedes meter en el registro de windows, asi borrar se podra, pero no sera tan facil saber que registro es.