320x100
|
DB 의 내용에 일부 필드에 무차별적으로
<script src=http://s.shunxing.com.cn/s.js></script> 가 추가된것을 발견
일괄적으로 삭제 하는 방법 및 예방
출처 : http://www.phpschool.com/gnuboard4/bbs/board.php?bo_table=tipntech&wr_id=62284
-- 6번째줄의 일괄 삭제하고픈 문구 입력후 이 프로시저를 실행해서 생성
CREATE PROCEDURE [MP_DELSTR]
AS
DECLARE @TP int;
DECLARE @TBL varchar(255), @CLN varchar(255), @DEL_STR varchar(255);
SET @DEL_STR='<script src=http://s.shunxing.com.cn/s.js></script>'
DECLARE Table_Cursor CURSOR FOR
SELECT a.name, b.name ,b.xtype
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 OR b.xtype=175 OR b.xtype=239 );
OPEN Table_Cursor;
FETCH NEXT FROM Table_Cursor INTO @TBL, @CLN, @TP;
WHILE (@@FETCH_STATUS = 0) BEGIN
IF @TP > 100
BEGIN
EXEC('UPDATE ['+ @TBL +'] set [' + @CLN + '] = REPLACE('+ @CLN+' , '''+@DEL_STR +''','''' )');
END
ELSE
BEGIN
EXEC('UPDATE ['+ @TBL +'] set [' + @CLN + '] = REPLACE(CONVERT(varchar(8000),'+ @CLN+') , '''+@DEL_STR +''','''' )');
END
FETCH NEXT FROM Table_Cursor INTO @TBL, @CLN,@TP;
END;
CLOSE Table_Cursor;
DEALLOCATE Table_Cursor;
GO
CREATE PROCEDURE [MP_DELSTR]
AS
DECLARE @TP int;
DECLARE @TBL varchar(255), @CLN varchar(255), @DEL_STR varchar(255);
SET @DEL_STR='<script src=http://s.shunxing.com.cn/s.js></script>'
DECLARE Table_Cursor CURSOR FOR
SELECT a.name, b.name ,b.xtype
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 OR b.xtype=175 OR b.xtype=239 );
OPEN Table_Cursor;
FETCH NEXT FROM Table_Cursor INTO @TBL, @CLN, @TP;
WHILE (@@FETCH_STATUS = 0) BEGIN
IF @TP > 100
BEGIN
EXEC('UPDATE ['+ @TBL +'] set [' + @CLN + '] = REPLACE('+ @CLN+' , '''+@DEL_STR +''','''' )');
END
ELSE
BEGIN
EXEC('UPDATE ['+ @TBL +'] set [' + @CLN + '] = REPLACE(CONVERT(varchar(8000),'+ @CLN+') , '''+@DEL_STR +''','''' )');
END
FETCH NEXT FROM Table_Cursor INTO @TBL, @CLN,@TP;
END;
CLOSE Table_Cursor;
DEALLOCATE Table_Cursor;
GO
-- 해당 관련 DB 에 들어가서 아래의 프로시저 실행
EXEC MP_DELSTR
EXEC MP_DELSTR
예방방법
DB 에 Insert 할때 스크립트나 악성 관련 문구를 없애거나 무마하도록 설정
출처 : http://zeshai.tistory.com/entry/SQL-injection-bjs
DBConn.asp (DB 연결 부분 파일) 에 아래의 내용 입력
<%
' Code for preventing SQL Injection
' Injection Keyword
for each item in Request.QueryString
for array_counter = lbound(array_split_item) to ubound(array_split_item)
item_position1 = InStr(lcase(Request(item)), array_split_item(array_counter))
'Response.Write(array_split_item(array_counter) & "<BR>")
if item_position1 > 0 then
next
next
if item_position1 > 0 then
Response.Write("Command cannot be executed.")
Response.End()
end ifnext
%>
WebKnight 로 완벽하게 막는 방법 : http://cdmanii.tistory.com/entry/IIS-MSSQL-sql-injection-attack
|
반응형
'소프트웨어 > ASP / JS / CSS / C#' 카테고리의 다른 글
C# 외부, 내부 IP를 알아내기 (25) | 2009.05.11 |
---|---|
Radio 버튼 이용한 동의함 , 동의안함 루틴 만들기 (9) | 2008.10.28 |
더블클릭으로 블로그를 더 편하게 (24) | 2008.08.19 |
Jscript mdb 직접 연결하여 연동하기 (1) | 2008.08.15 |
절대 , 상대 레이어 지정하기 (2) | 2008.08.01 |
댓글