• Sábado 20 de Abril de 2024, 12:13

Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.


Mensajes - cuentavarios

Páginas: [1]
1
Visual Basic 6.0 e inferiores / Re: Log in Visual Basic
« en: Domingo 24 de Abril de 2011, 03:22 »
No esta mal el ejemplo, pero esta enfocado a usuarios con pocos conocimientos y los puedes inducir a dos fallos de seguridad:
No se debe decir si lo que falla es el usuario o la contraseña, porque facilitamos el trabajo a quien quiera adivinar los datos de un usuario al que conoce. Son muchos los casos en los que los que trastean en nuestras aplicaciones son usuarios internos a nuestro entorno.
en las lineas siguientes estas facilitando que te hagan lo que se llama SQL Inyection:
    SQL = "SELECT Nombre, Password " & _
     "FROM Usuarios " & _
     "WHERE Nombre = '" & txt_Nombre.Text & "'" _
     & "AND Password = '" & txt_Password.Text & "'"

 El motivo es que si introducen caracteres extraños en txt_Nombre.Text o txt_Password.Text pueden conseguir acceso al programa, o como minimo se producirán errores que probablemente no hayas previsto. Por ejemplo si alguien escribe un %.
 Para solucionarlo hay que usar parametros, quedando algo parecido a lo siguiente:
SQL = "SELECT Nombre, Password " & _
 "FROM Usuarios " & _
 "WHERE Nombre = ? AND Password = ?"
 
    cmdUsuario.CommandText = SQL
    Set prmUsuario = cmdUsuario.CreateParameter("Nombre", adVarChar, adParamInput, 25, Trim( txt_Nombre.Text))
    cmdUsuario.Parameters.Append prmUsuario
    Set prmUsuario = cmdUsuario.CreateParameter("Clave", adVarChar, adParamInput, 25, Trim(txt_Password.Text))
    cmdUsuario.Parameters.Append prmUsuario
    Set Rst_Login= cmdUsuario.Execute()



Por ultimo un consejo, situa la base de datos en el mismo directorio de la aplicación o en un subdirectorio de este y usa como ruta app.path que devuelve la ruta donde estas ejecutando la aplicación.
Por ejemplo si la base de datos se llama  bdMejoras.mdb y se encuentra en un  subdirectorio de donde esta la aplicación llamado BD, sustituye
   "Data Source=" & "C:Bd_MEJORASdatabdMejoras.mdb" & ";"
por
   "Data Source=" & app.path & "BDbdMejoras.mdb" & ";"

Páginas: [1]