Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » SQL Server »

[SOLUCIONADO] Como Hacer un procedimiento para login de forma correcta

Estas en el tema de Como Hacer un procedimiento para login de forma correcta en el foro de SQL Server en Foros del Web. Al guien me podria decir por que y como arreglar esto como veran es un select pero en le segundo dejo varios espacios pero igual ...
  #1 (permalink)  
Antiguo 25/10/2013, 21:44
 
Fecha de Ingreso: octubre-2013
Mensajes: 14
Antigüedad: 11 años, 2 meses
Puntos: 0
Pregunta Problema con Select en SQL Server

Al guien me podria decir por que y como arreglar esto



como veran es un select pero en le segundo dejo varios espacios pero igual asi me muestra el mismo resultado que el primero sin espacios

  #2 (permalink)  
Antiguo 25/10/2013, 23:42
 
Fecha de Ingreso: julio-2012
Ubicación: Israel
Mensajes: 360
Antigüedad: 12 años, 5 meses
Puntos: 40
Respuesta: Problema con Select en SQL Server

Si la columna CCT es un Char (o NChar) el sistema tiene razon y los espacios son parte de la cadena.
Por el otro lado, si se trata de un Varchar (o NVarchar) - intenta cambiar el "=" en "Like".
__________________
El Castellano no es mi lengua materna: discúlpenme por los errores gramaticales.
Mi blog
  #3 (permalink)  
Antiguo 26/10/2013, 08:27
 
Fecha de Ingreso: octubre-2013
Mensajes: 14
Antigüedad: 11 años, 2 meses
Puntos: 0
Respuesta: Problema con Select en SQL Server

Cita:
Iniciado por GeriReshef Ver Mensaje
Si la columna CCT es un Char (o NChar) el sistema tiene razon y los espacios son parte de la cadena.
Por el otro lado, si se trata de un Varchar (o NVarchar) - intenta cambiar el "=" en "Like".
esto lo necesito para hacer un login, el cual llevaba asi


Código SQL:
Ver original
  1. ALTER PROCEDURE [dbo].[Sp_Acceso]
  2.     -- Add the parameters for the stored procedure here
  3.     @cctusuario VARCHAR(50),
  4.     @contraseña VARCHAR(50),
  5.     @Acesso INT output
  6. AS
  7. BEGIN
  8.     --
  9.     IF (SELECT COUNT (*)
  10.         FROM DATOS_GENERALES
  11.         WHERE cct=@cctusuario
  12.         AND pass = @contraseña)>0
  13.         BEGIN SET @Acesso = 1
  14.         print 'acceso'
  15.         END
  16.     ELSE
  17.         BEGIN SET @Acesso = 0
  18.         print 'denegado'
  19.         END
  20. END
pero me marcaba acceso tanto si dejaba espacio en cct o si lo dejo en pass, la forma correcta de hacer el login como seria entonces, no puedo usar like pra loguearme

Última edición por alfredost; 26/10/2013 a las 20:41 Razón: Código muy mal etiquetado. SQL no es código PHP. Por favor, poner el Highlight correcto.
  #4 (permalink)  
Antiguo 27/10/2013, 01:06
 
Fecha de Ingreso: julio-2012
Ubicación: Israel
Mensajes: 360
Antigüedad: 12 años, 5 meses
Puntos: 40
Respuesta: Problema con Select en SQL Server

No entiendo cuál es el problema con Like en este caso:
¿es porque no funciona correctamente o porque no es seguro utilizar el Like por razón de "SQL Injection"?
__________________
El Castellano no es mi lengua materna: discúlpenme por los errores gramaticales.
Mi blog
  #5 (permalink)  
Antiguo 27/10/2013, 09:02
 
Fecha de Ingreso: octubre-2013
Mensajes: 14
Antigüedad: 11 años, 2 meses
Puntos: 0
Respuesta: Problema con Select en SQL Server

Cita:
Iniciado por GeriReshef Ver Mensaje
No entiendo cuál es el problema con Like en este caso:
¿es porque no funciona correctamente o porque no es seguro utilizar el Like por razón de "SQL Injection"?
es por el sql injection, si uso el like para loguearme seria regalar el acceso
  #6 (permalink)  
Antiguo 27/10/2013, 09:23
 
Fecha de Ingreso: julio-2012
Ubicación: Israel
Mensajes: 360
Antigüedad: 12 años, 5 meses
Puntos: 40
Respuesta: Problema con Select en SQL Server

Tienes razón.
Otra solución pueda ser:
Código SQL:
Ver original
  1. WHERE   CCT='25KJN1761M' AND DataLength(CCT)=DataLength('25KJN1761M');
Voy a averiguar este tema para que este más seguro sobre el tema.
__________________
El Castellano no es mi lengua materna: discúlpenme por los errores gramaticales.
Mi blog
  #7 (permalink)  
Antiguo 27/10/2013, 13:13
 
Fecha de Ingreso: octubre-2013
Mensajes: 14
Antigüedad: 11 años, 2 meses
Puntos: 0
Respuesta: Problema con Select en SQL Server

Cita:
Iniciado por GeriReshef Ver Mensaje
Tienes razón.
Otra solución pueda ser:
Código SQL:
Ver original
  1. WHERE   CCT='25KJN1761M' AND DataLength(CCT)=DataLength('25KJN1761M');
Voy a averiguar este tema para que este más seguro sobre el tema.
eso me funciono bien, gracias
  #8 (permalink)  
Antiguo 27/10/2013, 13:32
 
Fecha de Ingreso: julio-2012
Ubicación: Israel
Mensajes: 360
Antigüedad: 12 años, 5 meses
Puntos: 40
Respuesta: Problema con Select en SQL Server

Lo que pasa es que cuando el sistema compara dos cadenas (parametros, columnas, cadenas explicitas..) - agrega a la cadena mas corta espacios para que tengan el mismo tamañם, y por lo tanto si comparas 'S' y 'S ' el sistema agrega los espacios adicionales tambien a la 'S'.
__________________
El Castellano no es mi lengua materna: discúlpenme por los errores gramaticales.
Mi blog
  #9 (permalink)  
Antiguo 27/10/2013, 22:21
 
Fecha de Ingreso: octubre-2013
Mensajes: 14
Antigüedad: 11 años, 2 meses
Puntos: 0
Respuesta: Problema con Select en SQL Server

entonces el sistema igualaba la longitud con espacios, gracias por la solucion y por la explicacion

Etiquetas: login, procedimiento_almacenado, select, sql, sql-sentencia
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 02:24.