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

Sugerencias para evitar inyección sql

Estas en el tema de Sugerencias para evitar inyección sql en el foro de SQL Server en Foros del Web. Hola. Revisando en varios foros, incluido el de microsoft busqué posibles soluciones para evitar la inyección sql. En el foro technet de microsoft, recomiendan reemplazar ...
  #1 (permalink)  
Antiguo 20/01/2009, 12:35
 
Fecha de Ingreso: enero-2009
Mensajes: 8
Antigüedad: 16 años
Puntos: 0
Sugerencias para evitar inyección sql

Hola. Revisando en varios foros, incluido el de microsoft busqué posibles soluciones para evitar la inyección sql. En el foro technet de microsoft, recomiendan reemplazar los siguientes caracteres: ' ; -- /* */ ( debido a que son metacaracteres del lenguaje sql )

En otros foros lei que la inyección sql aún es posible cuando se reemplaza la comilla simple por dos comillas simples, por lo que decidí reemplazarla por comillas dobles, pero no sé que tan seguro sea esto.

Hice una función que reemplaza los caracteres antes señalados y quisiera que un experto me pudiera decir qué tan segura es para evitar el ataque sql.

Código:
ALTER FUNCTION filtraTexto( @cadena varchar(MAX))
RETURNS varchar(MAX)
AS
BEGIN
		-- normaliza la cadena
		select @cadena = UPPER( LTRIM( RTRIM (@cadena)))
                -- reemplaza comilla simple por comilla doble 
		select @cadena = REPLACE(@cadena,'''',' " ')
		-- quita comentarios de una linea
		select @cadena = REPLACE(@cadena,'--','**')
		-- quita comentarios iniciales
		select @cadena = REPLACE(@cadena,'/*','**')
		-- quita comentarios finales
		select @cadena = REPLACE(@cadena,'*/','**')
		-- quita la arroba ( evita posibles usos de instrucciones DELCARE @variable )
		select @cadena = REPLACE(@cadena,'@','(@)')
		-- reemplaza punto y coma por coma
		select @cadena = REPLACE(@cadena,';',',')
	RETURN @cadena
END
;
Se agradecen las sugerencias.
  #2 (permalink)  
Antiguo 20/01/2009, 13:42
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 17 años, 5 meses
Puntos: 180
Respuesta: Sugerencias para evitar inyección sql

David

Creo que lo mejor y mas eficiente es cumplir con las tres capas del diseño sobre apliaciones, uitlizando, en este caso, SQL Server.

Si tu aplicativo, unicamente utiliza STORE PROCEDURE, tienes un gran trecho ganado en cuestion de inyeccion de codigo

Por otro lado, este es un tema muy tratado ya en los foros del desarrollo, si te vas a "San Google" y buscas "SQL Server" "INYECCION DE CODIGO", te sorprendera cuantos temas se han publicado al respecto.

Saludos
  #3 (permalink)  
Antiguo 20/01/2009, 14:20
 
Fecha de Ingreso: enero-2009
Mensajes: 8
Antigüedad: 16 años
Puntos: 0
Respuesta: Sugerencias para evitar inyección sql

Ya busqué en google y encuentro mucha información contradictoria, es por eso que pedí información aquí.
Estoy haciendo validaciones del lado del cliente y del lado del servidor. La función que indico la uso para filtrar los datos que le mando a un procedimiento almacenado.
  #4 (permalink)  
Antiguo 20/01/2009, 19:55
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 17 años, 5 meses
Puntos: 180
Respuesta: Sugerencias para evitar inyección sql

Entiendo, pero por cada PROCEDIMIENTO ejecutado, tendrias que validar cada variable de tipo CHAR.

Ademas, como validar la direccion de un correo electronico, ejemplo: [email protected]

Si vas a eliminar la arroba
  #5 (permalink)  
Antiguo 21/01/2009, 11:45
Avatar de Thumper  
Fecha de Ingreso: agosto-2004
Ubicación: Jesús María - Lima - Perú
Mensajes: 270
Antigüedad: 20 años, 4 meses
Puntos: 6
Respuesta: Sugerencias para evitar inyección sql

Para evitar la inyeccion de código fuente, una recomendación en cuanto a BD es no utilizar SQL-Dinámico.

Saludos.
__________________
Martín Alexis Valdivia S.
-----------------------------
"Quisiéramos cambiar el mundo, pero Dios no nos daría el código fuente." CAP
"Si Saber No Es Un Derecho, Seguro Será Un Izquierdo." WD
  #6 (permalink)  
Antiguo 21/01/2009, 15:52
 
Fecha de Ingreso: enero-2009
Mensajes: 8
Antigüedad: 16 años
Puntos: 0
Respuesta: Sugerencias para evitar inyección sql

En el diseño de la base de datos que estamos usando no nos interesa guardar ningùn correo electrónico
  #7 (permalink)  
Antiguo 21/01/2009, 21:16
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 17 años, 5 meses
Puntos: 180
Respuesta: Sugerencias para evitar inyección sql

Bueno, entonces que tengas mucha suerte y como dijo Thumper, una solucion drastica, CERO utilizacion de codigo dinamico (query)
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 23:59.