Foros del Web » Programación para mayores de 30 ;) » .NET »

Validar Login c# SQL

Estas en el tema de Validar Login c# SQL en el foro de .NET en Foros del Web. Buen dia, tengo el siguiente codigo, para hacer mi login, ya lo avente a un Datagrid y si me da resultados, cuando se cumple la ...
  #1 (permalink)  
Antiguo 02/03/2014, 14:49
 
Fecha de Ingreso: enero-2011
Ubicación: Del otro lado del monitor
Mensajes: 43
Antigüedad: 13 años, 4 meses
Puntos: 0
Información Validar Login c# SQL

Buen dia, tengo el siguiente codigo, para hacer mi login, ya lo avente a un Datagrid y si me da resultados, cuando se cumple la condicion, el problema es que lo que quiero es validar, si regresa datos que deje hacer login y si no lo hace, que mande error de acceso , es lo que me hace falta
Código C#:
Ver original
  1. private void button1_Click_1(object sender, EventArgs e)
  2.         {
  3.             SqlDataAdapter da = new SqlDataAdapter("SELECT*FROM Empleado WHERE User=" + textBox1.Text + "AND Password='" + textBox2.Text + "'", con);
  4.             DataSet ds = new DataSet();
  5.             da.Fill(ds, "Matricula");
  6.             if (Aqui va la condicion que no se)  
  7.             {
  8.  
  9.  
  10.             }
  11.         }



Ayuda
  #2 (permalink)  
Antiguo 02/03/2014, 20:28
 
Fecha de Ingreso: mayo-2013
Ubicación: Chaco, Argentina
Mensajes: 45
Antigüedad: 11 años
Puntos: 3
Exclamación Respuesta: Validar Login c# SQL

Hola MarkiiAk

según el código que muestras tengo que decirte que está en peligro de una Inyección SQL, que cualquier usuario malintencionado pueda inocularle a tu software, con efectos devastadores sobre la base de datos.

Puede ser que tú restrinjas el acceso desde los textboxes, pero igual es mejor práctica de programación encapsular las consultas a la base de datos para protegerla de cualquier intromisión.

¿Cómo prevenir esto?

Sencillo, te creás una función especial que elimine todos los caracteres "NO LETRA" de los objetos de texto antes de incrustarlos en tu sentencia SQL.

Código:
    private void button1_Click_1(object sender, EventArgs e)
            {
                SqlDataAdapter da = new SqlDataAdapter("SELECT*FROM Empleado WHERE User=" + Funcion_Anti_Hackers(textBox1.Text) + "AND Password='" + Funcion_Anti_Hackers(textBox2.Text) + "'", con);
                DataTable dt = new DataTable();
                da.Fill(dt, "Matricula");
                if (dt.Rows.Count > 0)  
                {
     
     
                }
            }
Fijate en ese código también contesto tu pregunta acerca de la condición a usar:
te conviene usar un datatable y no un dataset. Según los que saben programar en .NET ellos dicen que los DataSet consumen muchísima memoria y enlentecen enormemente tu software, por tal motivo desaconsejan el uso de los mismos.
En cambio un datatable te trae directamente la tabla de la consulta, y en este caso la condición que evaluamos es si tiene filas (Rows.Count > 0)

Saludos!

Última edición por javidotnet; 02/03/2014 a las 20:49
  #3 (permalink)  
Antiguo 05/03/2014, 10:04
Avatar de alan_69niupi  
Fecha de Ingreso: junio-2011
Mensajes: 200
Antigüedad: 12 años, 11 meses
Puntos: 17
Respuesta: Validar Login c# SQL

Hola, javidotnet tiene razón así como esta el código es muy vulnerable, en mi experiencia al hacer un login ya sea desde windows form o aspx debes seguir los siguiente pasos.
1. tu contraseña debe estar encriptada
2. debe haber una clases exclusiva para el query de consulta en un paquete externo al de las pantallas, esta clase debe ser de tipo INTERNAL
3. debe de existir una clase que se encargar de llamar a estas clases, digamos una clase de servicios. esta clase debe estar contenida en el mismo paquete de la clase del query, esta clase es PUBLIC
4. desde los formularios no debes de manejar ninguna consulta. las consultas deben ser generadas por proyectos externos y en forma de dll.
5. cuando pidas la contraseña en un textbox inmediatamente la debes de encriptar y comparar el arrar de bytes con el de la base de datos.
cuando tengas un dataset
es if(ds.Row.Counts>0)
entonces aqui te devuelve una fila, pero ojo, si permites que se registren usuarios iguales, esta consulta puede devolver más de una fila.


espero te ayude


saludos!!!!

Etiquetas: login, sql
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 18:05.