Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > Lazarus, FreePascal, Kylix, etc.
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 31-10-2016
Avatar de anubis
anubis anubis is offline
Miembro
 
Registrado: mar 2007
Posts: 863
Poder: 18
anubis Va por buen camino
acceso con clave a la aplicación

Buenos días,

Para no reabrir un tema del año pasado sobre el control de usuarios, e intentando resumir algo que me habeis dicho varias veces pero que, todavia no se me ilumina la cabeza, pregunto algo sencillo.

Evidentemente, nunca se debe meter ninguna contraseña en el código del programa, eso ya lo acabé de entender .
Ahora bien, para conectarme a una base de datos firebird, si tengo los usuarios en una tabla, pero no los tengo en el registro de usuarios de firebird (el único que tengo es SYSDBA). Debo de, en vez de usar una tabla de usuarios, meterlos en el registro de usuarios de firebird y asignarles un role de acceso a las tablas?, porque de otra forma no tengo forma de acceder salvo con SYSDBA.
Responder Con Cita
  #2  
Antiguo 31-10-2016
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.038
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Hay gustos para todo. Yo prefiero tener mi propia tabla de usuarios en la base de datos y controlarlos a partir de ahí.
Responder Con Cita
  #3  
Antiguo 31-10-2016
Avatar de anubis
anubis anubis is offline
Miembro
 
Registrado: mar 2007
Posts: 863
Poder: 18
anubis Va por buen camino
Gracias Casimiro Notevi por contestar.

Si, me refiero inicialmente. Con los usuarios que tienes en una tabla y sus contraseñas, no puede acceder porque, segun yo, no hay relación, no me permite entrar sino es con el usuario SYSDBA o cualquier otro que haya puesto. Pero necesita un punto de entrada.

Si uso por ejemplo un administrador tipo flamerobin, si el usuario no esta en manage users, no se puede.
Ahi es donde tengo el dilema.
Tengo la tabla con los usuarios, tal y como me habiais comentado en otro post.
Responder Con Cita
  #4  
Antiguo 31-10-2016
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.038
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Utilizo sysdba solamente, para todos.
Responder Con Cita
  #5  
Antiguo 31-10-2016
Avatar de anubis
anubis anubis is offline
Miembro
 
Registrado: mar 2007
Posts: 863
Poder: 18
anubis Va por buen camino
Perdon que insista, asi lo estaba haciendo yo, pero como se conecta el cliente con SYSDBA, pones el usuario y la contraseña en el codigo del programa?. Eso era lo que queria evitar.
Responder Con Cita
  #6  
Antiguo 31-10-2016
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.038
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
No lo había entendido. Entonces puedes cambiar el usuario sysdba por otro, pero tendrás que ponerlo al menos en el componente de base de datos que estés usando.
La otra opción sería guardar ese usuario/clave en un fichero externo, cifrado. Lo lees y descifras al iniciar el programa y lo utilizas para conectar a la base de datos.
El problema es que tienes que controlar que no te borren ese fichero.
Responder Con Cita
  #7  
Antiguo 31-10-2016
Avatar de anubis
anubis anubis is offline
Miembro
 
Registrado: mar 2007
Posts: 863
Poder: 18
anubis Va por buen camino
Ahi le has dado amigo .

Tu lo haces asi? con un archivo aparte o dentro del codigo. Bueno, ya es un avance al punto que hemos llegado .

La otra vez meti en trucos el crear usuarios con sus roles con el componente fbadmin que, en su momento es lo que estaba usando. Pero es mas practico la tabla de usuarios con flags.

Muchas gracias amigo Casimiro Notevi. Al menos no estaba tan mal a la hora de meter el usuario SYSDBA dentro del componente de base de datos.
Responder Con Cita
  #8  
Antiguo 31-10-2016
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.038
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Siempre uso sysdba y masterkey en el componente Database.
Luego, depende del proyecto, pero normalmente tengo una base de datos con los usuarios, claves, permisos, etc. y las empresas a las que puede acceder. Esas empresas serían las bases de datos del programa. Ejemplo muy resumido:
Imágenes Adjuntas
Tipo de Archivo: png ejem.png (9,3 KB, 18 visitas)

Última edición por Casimiro Notevi fecha: 01-11-2016 a las 01:25:58.
Responder Con Cita
  #9  
Antiguo 31-10-2016
Avatar de anubis
anubis anubis is offline
Miembro
 
Registrado: mar 2007
Posts: 863
Poder: 18
anubis Va por buen camino
Muchas Casimiro Notevi,

Ya te dire como me fue, pero basicamente yo uso como tu lo haces. Sin roles ni nada. Todo internamente.

Gracias
Responder Con Cita
  #10  
Antiguo 31-10-2016
Avatar de mamcx
mamcx mamcx is offline
Moderador
 
Registrado: sep 2004
Ubicación: Medellín - Colombia
Posts: 3.911
Poder: 25
mamcx Tiene un aura espectacularmamcx Tiene un aura espectacularmamcx Tiene un aura espectacular
Cita:
Empezado por Casimiro Notevi Ver Mensaje
La otra opción sería guardar ese usuario/clave en un fichero externo, cifrado. Lo lees y descifras al iniciar el programa y lo utilizas para conectar a la base de datos.
Pero eso es regresar al mismo problema: Tienes la clave en el codigo!


---

La solucion general (que esta enfocada a .NET) se delinea aqui:

https://msdn.microsoft.com/en-us/lib...=vs.80%29.aspx

Basicamente, de ser posible se usa "Autenticacion integrada" que es simplemente dejar que Windows se encargue del tema.

No se como es con Firebird + Delphi, ya que en los casos parecidos a este he usado BD empresariales (Sql Server, PostgreSQL, etc)

El API que se debe usar es este:

DPAPI
https://msdn.microsoft.com/en-us/library/ms995355.aspx

----

Ahora bien, hay 2 formas de enfrentar esto:

- Consideras que la BD es un "fichero local" y el asunto de la clave es irrelevante. La seguridad que se le aplica es la de "archivos y directorios" como todos los demas.

Este es el modelo sqlite. Y esto significa que acceso fisico a la BD asegura que se pueden acceder a los datos.

- Consideras el contenido de la BD sensible y hay que protegerlo de aqui:

a- Usas seguridad integrada. Creas un usuario de *windows* y ese es el que usas para acceder a la BD.

ESTA ES LA FORMA RECOMENDADA.

b- Incias con la clave "estandar". Generas (o solicitas) un usuario/clave *en el momento de la instalacion" y *guardas esto en el enclave de seguridad con DPAPI*. Usas el API para obtener la info desde alli.

Asi no te cargas el tema de la desencriptada. El problema es como "recuperar" la clave si algo pasa. Ese es otro lio!

En tal caso, debes guardar en un archivo la info, y que esta la guarden en algun lado. Pero no lo haces tu.

Asi es masomenos una de las formas como se hace en apps empresariales (aunque honestamente, la mayoria siguen el modelo 1!)
__________________
El malabarista.
Responder Con Cita
  #11  
Antiguo 01-11-2016
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cita:
Empezado por mamcx Ver Mensaje
Pero eso es regresar al mismo problema: Tienes la clave en el codigo!
No necesariamente. El archivo externo se puede cifrar con la contraseña del usuario. La aplicación presenta la ventana de login, el usuario coloca su contraseña y la aplicación la usa para descifrar el archivo que contiene la clave de sysdba. La clave para cifrar el archivo puede coincidir con la del usuario registrado en la tabla de usuarios propia del sistema.

Bueno, estoy pensando en voz alta, pero creo que funcionaría ¿no? Claro que cada usuario debe tener su propio archivo cifrado.

LineComment Saludos
Responder Con Cita
  #12  
Antiguo 01-11-2016
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Por cierto que observo que los usuarios de Firebird/Interbase siempre usan un sólo usuario a nivel de servidor (sysdba). Supongo que esto está bien si sólo hay un sistema instalado en el servidor pero no en el uso compartido. Nosotros manejamos muchos sistemas en un servidor y cada uno tiene su propio usuario con acceso exclusivamente a la base (o bases) que requiera. Esto, independientemente de la tabla de usuarios, permisos, etc. que cada sistema maneje.

LineComment Saludos
Responder Con Cita
  #13  
Antiguo 01-11-2016
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.038
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Hay que estudiar cada caso en profundidad, lo dicho son solamente pautas más o menos estandar que pueden variar mucho de un caso a otro.
Responder Con Cita
  #14  
Antiguo 05-11-2016
Avatar de anubis
anubis anubis is offline
Miembro
 
Registrado: mar 2007
Posts: 863
Poder: 18
anubis Va por buen camino
Gracias por los aportes.

Hasta donde llega mi escaso entendimiento, firebird maneja los usuarios de forma independiente del sistema en que se aloja la base de datos. Se puede usar inicialmente la clave y usuario de SYSDBA y luego cambiarla si se desea y asignar los usuarios al sistema firebird, asi, como decis, solo acceden los usuarios a las partes de la base de datos que se requieran.

Como dice Casimiro Notevi, todo depende de como quieras hacer tu sistema y que tan seguro lo quieras hacer, pero con todo lo que habeis expuesto, se puede elaborar un plan de accesos.

Gracias de nuevo, lo voy a revisar.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Proteger aplicacion por clave tarco35 Varios 3 04-11-2014 13:33:19
Extraer datos de una pagina en java que tiene clave (sabiendo la clave claro) ;) kalimocho Internet 2 29-06-2005 05:11:24
enmascarar un tedit cuando se ingrese La clave de acceso andresenlared Varios 4 08-01-2004 17:45:27
Clave de acceso........necesito que alguien me ayude David J. Conexión con bases de datos 1 20-11-2003 10:40:09


La franja horaria es GMT +2. Ahora son las 00:15:33.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi