Ver Mensaje Individual
  #1 (permalink)  
Antiguo 20/01/2009, 12:35
DavidBD
 
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.