상세 컨텐츠

본문 제목

sql injection 문자열 제거

Programming/ms-sql

by luckey 2011. 5. 11. 09:49

본문


-- DB 선택 시작 --
use DB명 -- 적용하려는 DB명을 선언해 주세요. (ex: use test_db) --
-- DB 선택 끝 --

-- 변수 선언 시작 --
declare @org_user varchar(50)
-- 변수 선언 끝 --

--/// 테이블 소유자를 DBO로 설정하는 전 과정 시작 ///--
set @org_user = 'dbo'
--/// 테이블 소유자를 DBO로 설정하는 전 과정 끝 ///--

--/// 테이블 소유자를 DBO로 일괄 변경하는 부분 시작 ///--
DECLARE @TABLE_NAME VARCHAR (50)
DECLARE @TABLE_OWNER VARCHAR (50)
DECLARE TCURSOR CURSOR
 

FOR SELECT TABLE_NAME, TABLE_SCHEMA FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_TYPE = 'BASE TABLE' AND TABLE_NAME <> 'dtproperties'
FOR READ ONLY

OPEN TCURSOR FETCH NEXT FROM TCURSOR INTO @TABLE_NAME, @TABLE_OWNER
WHILE @@FETCH_STATUS = 0
BEGIN
    EXEC ('SP_CHANGEOBJECTOWNER ''[' + @TABLE_OWNER + '].[' + @TABLE_NAME + ']'', ''dbo''')
    FETCH NEXT FROM TCURSOR INTO @TABLE_NAME, @TABLE_OWNER
END
CLOSE TCURSOR
DEALLOCATE TCURSOR
--/// 테이블 소유자를 DBO로 일괄 변경하는 부분 끝 ///--

--/// 삽입된 스크립트 공백으로 치환하는 부분 시작 ///--
declare @t varchar(255),@c varchar(255) declare table_cursor cursor for
select a.name, b.name
from sysobjects a, syscoluMns b
where a.id=b.id and a.xtype='u' and (b.xtype=99 or b.xtype=35 or b.xtype=231 or b.xtype=167)
open table_cursor fetch next from table_cursor into @t,@c

while(@@fetch_status=0)
begIn
--/// 수정해 주어야 하는 부분 두번째 입니다. 시작 ///--
--/// 악성코드 부분을 실제 삭제하려는 악성코드로 수정해 주세요. (ex: <script src=http://어쩌구></script>) ///--
exec('update [' +@t+ '] set [' +@c+ '] = replace(convert(varchar(8000), [' +@c+ ']), ''악성코드'','''')')
--/// 수정해 주어야 하는 부분 두번째 입니다. 끝 ///--
fetch next from table_cursor into @t,@c
end

close table_cursor
deallocate table_cursor

관련글 더보기

댓글 영역