Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 15-06-2005
Striker Striker is offline
Registrado
 
Registrado: jun 2005
Ubicación: Boca del Río, Veracruz [México]
Posts: 6
Poder: 0
Striker Va por buen camino
Exclamation Ayuda para crear un formulario de login y pass

Saludos a todos!

Bueno, mi problema es el siguiente:

Cuento con una base de datos ya creada en access llamada savcc.mdb donde en una tabla llamada tbl_logpass cree unos campos que son:

clave_user
login_user
pass_user

bueno, y mi formulario tiene los siguientes campos:

un edit para el login
un edit para el password
un boton de aceptar para que haga las respectivas validaciones

lo que deseo que haga este formulario es que accese a la base de datos ya mencionada y que verifique si el login y pass introducidos en los campos edit concuerdan con los que estan dentro de la base de datos de access y si fue satisfactoria la busqueda proceda a abrir otro form donde se realizaran actividades como altas,bajas, modificaciones y consultas de clientes y demas procesos.

cabe notar que ya realice la conexion a la base de datos con el ADOConnection(ADODB) y tambien ya realice la conexion con la tabla con el ADOTable(ADODB).

Agradeciendo de antemano la ayuda prestada y por tomarse el tiempo de leer mi problema.

Hasta luego y Exitos!

NOTA:
He editado el post porque ya resolvi mi problema, terminando mi proyecto y despues de que lo entregue procedere con enviar el codigo para futuros consultantes. Hasta luego y gracias!

Última edición por Striker fecha: 15-06-2005 a las 08:47:56. Razón: ya resolvi mi problema
Responder Con Cita
  #2  
Antiguo 01-08-2006
pepegu pepegu is offline
Registrado
 
Registrado: jun 2006
Posts: 2
Poder: 0
pepegu Va por buen camino
hola

ojala que puedas poner como lo solucionaste... yo tengo estoy queriendo resolver la misma situacion.

Gracias!!
Responder Con Cita
  #3  
Antiguo 01-08-2006
Avatar de vtdeleon
vtdeleon vtdeleon is offline
Miembro
 
Registrado: abr 2004
Ubicación: RD & USA
Posts: 3.236
Poder: 24
vtdeleon Va por buen camino
Cita:
Empezado por pepegu
ojala que puedas poner como lo solucionaste... yo tengo estoy queriendo resolver la misma situacion.
Haz una búsqueda en el foro!
Se ha hablado bastante de este tema.

Saludos
__________________
Van Troi De León
(Not) Guía, Code vB:=Delphi-SQL, ¿Cómo?
Viajar en el tiempo no es teóricamente posible, pues si lo fuera, ya estarían aqui contándonos al respecto!
Responder Con Cita
  #4  
Antiguo 01-08-2006
kman kman is offline
Miembro
 
Registrado: dic 2005
Ubicación: República Dominicana.
Posts: 67
Poder: 19
kman Va por buen camino
Hola.

Yo lo hice realizando un Locate al codigo de usuario en la tabla de claves
y luego procedí a validar tal clave que concuerde con la del edit, si es correcto que inicie sesión.

si necesitas códigos me avisas.
Responder Con Cita
  #5  
Antiguo 02-08-2006
Avatar de dayrontbs
dayrontbs dayrontbs is offline
Miembro
 
Registrado: jun 2006
Ubicación: Cuba
Posts: 22
Poder: 0
dayrontbs Va por buen camino
Smile Sugerencia

Para podr comprobar si el usuario y la contraseña son correctas pues debes hacer primero uan consulta a esa base de datos trayendo los usuarios y las contraseñas guardadas y cargarlos por ejemplo en un combobox para usuarios y otro para contraseñas obviamente invisibles al usuario y hacer un ciclo segun la cantidad de items del combobox preguntar uno por uno.. por ejemplo el item 0 del combobox usuario es pepe y el item 0 del combobox pass es 861030 pues pregunto si lo que esta en mis edit es eso pues adelnate si no es asi paso al siguiente item y ya... si necesitas mas ayuda pyes dime.... yo tengo hecho un login para una aplicacion mia pero utilizo el registro de windows que es mas recomendable tengo creadas mis llaves donde nadie sabe ni encontraran jajajajaa te recomiendo que uses este metodo, si necesitas mas explicacion pues ya sabes donde estamos...
__________________
Division Pagos Electronicos GCC
Responder Con Cita
  #6  
Antiguo 02-08-2006
Sick boy Sick boy is offline
Miembro
 
Registrado: may 2003
Ubicación: Cantabria
Posts: 245
Poder: 21
Sick boy Va por buen camino
Cita:
utilizo el registro de windows que es mas recomendable tengo creadas mis llaves donde nadie sabe ni encontraran jajajajaa
Eso es lo que tu te crees.
Este metodo no es nada seguro, un usuario con conocimientos medios se lo salta en unos minutos.

Un programa como regmon, puede indicar facilmente que claves de registro estas leyendo, e incluso creo recordar que te da los valores obtenidos.

Asi que no solo no es seguro, sino que como ademas dices que lees todas las claves de todos los usuarios, pues eso, de un tirón obtienes todos los login y password.

Lo del locate, pues es un poco más seguro, pero como que tampoco es muy valido. Nunca es buena idea traerte el pass y hacer una comprobación.
Por otro lado, access no es nada seguro, asi que de insertar la contraseña, pasenla por un encriptador, porque sino en 2 minutos se obtienen todos los login y pass.

Si realmente les interesa la seguridad de las contraseñas, hay que elaborarlo un poco más, lo anteriormente expuesto es una seguridad "para niños"

Les voy a dar una idea:
Hagan una sentencia select parametrizada con el login y el pass, y luego comprueben si el query les devuelve alguna fila (con lo que el acceso es correcto) o si por el contrario no les devuelve ninguna fila (login o pass incorrectos).

Ejemplo:
Código Delphi [-]
q1.sql.add('SELECT login FROM usuarios WHERE login=:log AND password=ass');
q1.parambyname('log').asstring:=edit_login.text;
q1.parambyname('pass').asstring:=edit_pass.text;
q1.open;
if q1.recordcount>0 then showmessage('correcto');
// recordcount no es valido para bases cliente/servidor.

Si quieren, encripten el login o el pass (o ambos) en la base de datos, y antes de pasar el dato al parametro hagan de nuevo la encriptación.

Y como apunte personal, no usen access, NUNCA

Saludos
Responder Con Cita
  #7  
Antiguo 02-08-2006
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
Hola, totalmente de acuerdo en que el uso del registro no es confiable. Sin embargo creo conveniente observar que una sentencia como

Código SQL [-]
SELECT login FROM usuarios WHERE login=login AND password=passsord

pudiera prestarse a una inyección sql. Pienso que convendría más simplemente buscar el login:

Código SQL [-]
SELECT login FROM usuarios WHERE login=login

y con el registro resultante (si existe) comparar las contraseñas. Eso sí, la contraseña debe guardarse encriptada y para hacer la comparación no se desencripta sino que se encripta la que se proporciona y se compara con la almacenada.

// Saludos
Responder Con Cita
  #8  
Antiguo 02-08-2006
Sick boy Sick boy is offline
Miembro
 
Registrado: may 2003
Ubicación: Cantabria
Posts: 245
Poder: 21
Sick boy Va por buen camino
jejejeeje, no queria entrar en el SQL-injection para no complicar el tema.
Con access bastaria con romper la protección de la base de datos y leer la tabla de usuarios, asi que no me pareció oportuno entrar a comentar esta tecnica.

Pero, date cuenta de que en el caso de encriptar el login y el password, la injeccion de sql es imposible, ya que los dos parametros se encriptan ANTES DE pasarselos al query.

Por otro lado,
Cita:
Código SQL [-]
SELECT login FROM usuarios WHERE login=login AND password=passsord

pudiera prestarse a una inyección sql. Pienso que convendría más simplemente buscar el login:


Código SQL [-]
SELECT login FROM usuarios WHERE login=login
Si no se encriptan y/o procesan (limitar el juego de caracteres es suficiente) los datos proporcionados por el usuario, AMBAS sentencias son inyectables.

¿por qué es más segura la segunda sentencia que la primera???
Responder Con Cita
  #9  
Antiguo 02-08-2006
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
Ja, creo que tienes razón. Es tan insegura una como la otra, en ambas puede haber inyección.

Moraleja: encriptar.

// Saludos
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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


La franja horaria es GMT +2. Ahora son las 22:05:19.


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