elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.
 
Inicio Ayuda Ingresar Registrarse
11 Octubre 2008, 17:50  



+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General (Moderadores: Hendrix, E0N)
| | |-+  manejo de contraSEÑA DE BASE DE DATOS EN UN SISTEMA DE INFORMACIÓN
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Imprimir
Autor Tema: manejo de contraSEÑA DE BASE DE DATOS EN UN SISTEMA DE INFORMACIÓN  (Leído 225 veces)
kakalott

Desconectado Desconectado

Mensajes: 103


Super Saiyan


Ver Perfil
manejo de contraSEÑA DE BASE DE DATOS EN UN SISTEMA DE INFORMACIÓN
« en: 28 Abril 2008, 17:46 »

Saludos amigos, una duda importante, la situación es la siguiente:

Necesito un análisis de entorno un sistema de información en el cual, se requiere conectar a la base de datos desde una ventana principal, el detalle es que deseo minimizar el riezgo de que esa contraseña sea la que se utilice como la de acceso a la base de datos con todos los privilegios, el modelo que se pretende es uin análisis donde se pueda dar una idea de como manejar ese proceso, que el acceso a la base de datos lo utilizan los programas dentro del móduilo, pero se requiere brindar seguridad de que no vaya la contraseña de la base de datos en el código compilado ni fuente, espero explicarme, y espero me ayuden con una idea. gracias.
En línea

LSSA
^TiFa^

Desconectado Desconectado

Mensajes: 673


Need a Love Loan? Borrow some from me :)


Ver Perfil
Re: manejo de contraSEÑA DE BASE DE DATOS EN UN SISTEMA DE INFORMACIÓN
« Respuesta #1 en: 28 Abril 2008, 18:31 »

Hola  :)

Haber si he comprendido tu peticion. Dices que quieres hacer una aplicacion ya sea grafica o via web... que se conecte a una DB y haga una peticion a algo.... pero no quieres que la aplicacion en cuestion guarde la contraseña del usuario de la DB.. dices que no importa que la aplicacion sea compilada o no tu no quieres guardar la contraseña del usuario de la DB dentro.

Eso amigo me temo que es imposible. Es como querer ingresar a un SO cada vez que reinicies, sin ponerle contraseña, esto es posible siempre y cuando la contraseña haya sido guardada en alguna DB o archivo encriptado lol.. y asi el SO revise dicho archivo y te de acceso Automatico.

Ahora, hay varias cositas que si puedes hacer.

1 - Crear una Vista o 'VIEW' en la DB en cuestion, dicha vista guardara todos los cambios (update, delete, insert, etc) que se realizen en la tabla principal.
Por ejemplo tengo una tabla llamada prueba y creare una Vista que se alimente de toda la informacion y cambios que se le den a prueba:

Código:
mysql> select *  from prueba;
+---------+
| nombres |
+---------+
| Juana   |
| Juanita |
| Jose    |
| Loca    |
+---------+
4 rows in set (0.00 sec)

mysql> create view copia as select * from prueba;
Query OK, 0 rows affected (0.05 sec)

mysql> show tables;
+--------------------+
| Tables_in_primaria |
+--------------------+
| copia              |
| prueba             |
+--------------------+
2 rows in set (0.01 sec)

mysql> grant select, usage on copia to 'pepe'@'%';
Query OK, 0 rows affected (0.00 sec)

mysql> show tables;
+--------------------+
| Tables_in_primaria |
+--------------------+
| copia              |
| prueba             |
+--------------------+
2 rows in set (0.00 sec)

mysql>

Que he hecho aqui? simple, cree una nueva vista llamada copia, copia es un espejo de la tabla prueba, copia guardara todos los cambios que se realizen en prueba, ya que copia es un espejo de prueba todos los cambios se reflejaran.
Luego existe un usuario en mi DB llamado 'pepe' yo otorgue 2 privilegios a 'pepe' sobre la vista copia, estos dos privilegios son seleccionar y ver la vista copia, mas mi usuario 'pepe' no podra ver la tabla prueba, ni podra hacer ninguna modificacion o cambio alguno ni a prueba ni a copia, ejemplo:


Código:
mysql> show grants;
+--------------------------------------------------------------------------------------------+
| Grants for pepe@%                                                                          |
+--------------------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'pepe'@'%' WITH MAX_QUERIES_PER_HOUR 10 MAX_CONNECTIONS_PER_HOUR 10 |
| GRANT USAGE ON `pepe`.* TO 'pepe'@'%' WITH GRANT OPTION                                    |                                  |
+--------------------------------------------------------------------------------------------+
6 rows in set (0.00 sec)

mysql> show tables;
+--------------------+
| Tables_in_primaria |
+--------------------+
| copia              |            |
+--------------------+
2 rows in set (0.00 sec)

mysql> describe copia;
+---------+----------+------+-----+---------+-------+
| Field   | Type     | Null | Key | Default | Extra |
+---------+----------+------+-----+---------+-------+
| nombres | char(20) | YES  |     | NULL    |       |
+---------+----------+------+-----+---------+-------+
1 row in set (0.02 sec)

mysql> select * from copia;
+---------+
| nombres |
+---------+
| Juana   |
| Juanita |
| Jose    |
| Loca    |
+---------+
4 rows in set (0.02 sec)

mysql> delete from copia where nombres = 'Juana';
ERROR 1142 (42000): DELETE command denied to user 'pepe'@'localhost' for table 'copia'
mysql> update copia set nombres = 'Jose' where nombres = 'Loca';
ERROR 1142 (42000): UPDATE command denied to user 'pepe'@'localhost' for table 'copia'


Como vez anteriormente el usuario 'pepe' solo tiene acceso a ver la Vista llamada copia, el puede ver los datos que entran y salen pero no puede actualizar, ni borrar, ni ejecutar alter, ni hacer nada. Tampoco tiene privilegios para ver la tabla principal 'prueba'

Puedes perfectamente crear tu aplicacion, usando dentro un usuario y contraseña que no tenga privilegios de 'root' en la DB sino que tenga los minimos privilegios posibles. Puedes jugar con esto con las DB.

Tambien puedes compilar tu aplicacion para que nadie vea el usuario ni la contraseña, y antes de acceder a la aplicacion puedes tener un usuario y contraseña que solo aplique para poder ejecutar la aplicacion :)

Tambien puedes si tu aplicacion es via web hecha con php por ejemplo, usar encriptacion md5 para validar contrasenas de usuarios a la DB, mysql te crea un md5 de cualquier palabra y puedes usarlo como validacion:

Código:
mysql> select md5('contrasena999');
+----------------------------------+
| md5('contrasena999')             |
+----------------------------------+
| 38e82414161ffd571675fe43f3b2acc8 |
+----------------------------------+
1 row in set (0.03 sec)

mysql>

Y dar uso de '38e82414161ffd571675fe43f3b2acc8' para validar la contraseña en tu aplicacion, eso ya es opcional de ti. Por ejemplo en mi aplicacion ejecuto sentencia SQL para validar la contraseña insertada con el md5 ya guardado :

Código:
mysql> select strcmp(md5('contrasena999'), '38e82414161ffd571675fe43f3b2acc8');
+------------------------------------------------------------------+
| strcmp(md5('contrasena999'), '38e82414161ffd571675fe43f3b2acc8') |
+------------------------------------------------------------------+
|                                                                0 |
+------------------------------------------------------------------+
1 row in set (0.02 sec)

Si mysql devuelve 0 es porque la contraseña concuerda con el md5, si devuelve otro numero es que no concuerda y echaria al usuario para afuera.

Hay maneras de crear la seguridad, pero eso que pides que poder entrar sin guardar nada me temo que es imposible.

Un Beso   :-*
« Última modificación: 28 Abril 2008, 18:38 por ^TiFa^ » En línea

http://chixmes.blogspot.com/

Si quieres saber el valor del dinero, trata de conseguirlo prestado. 

El que se enorgullece de sus conocimientos es como si estuviera ciego en plena luz.
- Benjamin Franklin.

kakalott

Desconectado Desconectado

Mensajes: 103


Super Saiyan


Ver Perfil
Re: manejo de contraSEÑA DE BASE DE DATOS EN UN SISTEMA DE INFORMACIÓN
« Respuesta #2 en: 28 Abril 2008, 18:56 »

Saludos amigo, gracias por la respuesta, si comprendiste correctamente y si me da ciertas ideas muy importantes para tomar en cuenta, te agradezco mucho.

Ideas adicionales a todo mundo se agradecen.
En línea

LSSA
Páginas: [1] Ir Arriba Imprimir 
Ir a:  







Consolas     La Web de Goku     MilW0rm     MundoDivx

Hispabyte     Truzone     TodoReviews     ZonaPhotoshop

hard-h2o modding    Foros de ayuda    Yashira.org    Videojuegos    indetectables.net   

Noticias Informatica    Seguridad Informática    ADSL    Foros en español    eNYe Sec

Todas las webs afiliadas están libres de publicidad engañosa.

Powered by SMF 1.1.6 | SMF © 2006-2008, Simple Machines LLC
Free counter and web stats