Ver Mensaje Individual
  #2 (permalink)  
Antiguo 04/11/2008, 04:44
Avatar de bossm4
bossm4
 
Fecha de Ingreso: noviembre-2005
Ubicación: Torrelodones, España
Mensajes: 92
Antigüedad: 18 años, 6 meses
Puntos: 0
Respuesta: Problema de SQL injection ayuda limpiar bbdd

Me respondo a mi mismo por si le puede servir a alguien:

Entramos al SQLManager y en la bbdd en cuestión creas estos dos procedimiento almacenados

Código:
create PROCEDURE FindReplace
 (
 @TABLE  VARCHAR(200),
 @Field  VARCHAR(200),
 @WHERE VARCHAR(100),
 @Find  VARCHAR(500),
 @REPLACE  VARCHAR(500)
 )
 AS
 DECLARE @query VARCHAR(8000)
 SET @query  = 'UPDATE ' +  @TABLE +
               ' SET '+  @Field + '= REPLACE(CONVERT(varchar(8000),'
               + @Field + '),''' +  @Find + ''',''' + @REPLACE  +''')'
 IF(@WHERE <> '')
         SET @query = @query + ' WHERE '+@WHERE
       
 EXECUTE (@query)
 GO



create Procedure RemoveStringFinal
 @FIND  VARCHAR(500),
 @REPLACE  VARCHAR(500)

as

DECLARE @TABLE_NAME VARCHAR(500)
DECLARE @COLUMN_NAME VARCHAR(500)
DECLARE @DATA_TYPE VARCHAR(500)
DECLARE db_cursor CURSOR FOR
  select  TABLE_NAME, COLUMN_NAME, DATA_TYPE FROM INFORMATION_SCHEMA.COLUMNS

OPEN db_cursor 
FETCH NEXT FROM db_cursor INTO @TABLE_NAME, @COLUMN_NAME, @DATA_TYPE

WHILE @@FETCH_STATUS = 0 
BEGIN 
       if @DATA_TYPE = 'varchar' or @DATA_TYPE = 'text' or @DATA_TYPE = 'ntext' or @DATA_TYPE = 'nvarchar'
          begin

     print @TABLE_NAME
            print @COLUMN_NAME
     print @DATA_TYPE
  
              EXEC FindReplace @TABLE_NAME,@COLUMN_NAME,'',@FIND,@REPLACE 

          end
      

       FETCH NEXT FROM db_cursor INTO @TABLE_NAME, @COLUMN_NAME, @DATA_TYPE
END 

CLOSE db_cursor 
DEALLOCATE db_cursor
Una vez creados ejecutas el segundo del el SQLManager y te pedira la cadena que quieres borrar y cual quieres poner en su lugar. En cuestión de segundos tienes la bbdd limpia.
__________________
Madrid - Zaragoza - Sevilla | www.hucaconsulting.es | Desarrollo gráfico y web a medida