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.