많은 사람들이 데이터베이스가 해킹당하는 것을 경험했다고 생각합니다. 여기서는 제가 어떻게 대처하는지 이야기해보겠습니다.
1단계: 기존 데이터베이스를 백업합니다.
2단계:
데이터베이스에서 JS 트로이 목마를 제거하려면 다음 ASP 파일을 실행하십시오.
참고: conn.asp를 직접 작성했습니다.
프로그램 코드
'JS 트로이 목마 콘텐츠를 여기에 넣으세요. 데이터베이스의 JS 트로이 목마 콘텐츠로 변경하는 것을 잊지 마세요.
<!--#include 파일="conn.asp"-->
<%
Server.ScriptTimeOut=180
rstSchema = conn.OpenSchema(20) 설정
k=1
rstSchema.EOF까지 수행 '데이터베이스 테이블 탐색
rstSchema("TABLE_TYPE")="TABLE"인 경우 다음
response.write K&".<font color=red><b>"&rstSchema("TABLE_NAME") & "</b></font>:" '테이블 이름 표시
rs=Server.CreateObject("ADODB.Recordset")를 설정합니다.
sql="[" & rstSchema("TABLE_NAME")&"]에서 * 선택"
rs.open SQL,콘,1,3
i=0 to rs.fields.count-1 '테이블의 필드 탐색
int(rs(i).Type)=129 또는 int(rs(i).Type)=130 또는 int(rs(i).Type)=200 또는 int(rs(i).Type)=201 또는 int인 경우 (rs(i).Type)=202 또는 int(rs(i).Type)=203 그러면 ' 필드 유형이 문자 유형인 필드만 처리합니다.
conn.execute("update ["&rstSchema("TABLE_NAME")&"] set "&rs(i).name&" =replace(cast("&rs(i).name&" as varchar(8000)),'Put here JS 트로이 목마 콘텐츠','')")
response.write rs(i).name &" "&rs(i).Type &" "'실행된 필드 이름을 표시합니다.
종료 조건
다음
응답."<br>" 쓰기
종료 조건
rstSchema.MoveNext
k=k+1
고리
response.Write "실행 성공"
%>
데이터베이스 테이블이 많은 경우 위의 데이터베이스 구조 탐색이 완료되기 전에 IIS에 의해 중지됩니다. 이때 당신은 할 수 있습니다
프로그램 코드
rstSchema("TABLE_TYPE")="TABLE"인 경우 다음
다음과 같이 k 값의 범위를 적절하게 추가합니다.
프로그램 코드
rstSchema("TABLE_TYPE")="TABLE" k>10 및 k<20인 경우
이 경우 한 번에 9개의 테이블만 운영됩니다.
3단계:
데이터베이스 JS 인젝션(<script, </script>, http:// 등의 문자가 포함됨)의 특성에 따라,
conn.asp에 다음 코드를 입력합니다.
프로그램 코드
기능 Cheack_Sqljs()'데이터베이스의 외부 링크에서 JS 주입을 방지합니다. true는 외부 링크에서 JS 주입이 발견되었음을 나타냅니다.
희미한 F_Post,F_Get
Cheack_Sqljs=거짓
If Request.Form<>"" Then' 양식이 제출될 때 감지
Request.Form의 각 F_Post에 대해
If (Instr(LCase(Request.Form(F_Post)),"<script")<>0 또는 Instr(LCase(Request.Form(F_Post)),"</script>")<>0) 및 Instr(LCase (Request.Form(F_Post))," http://")<>0 그러면
Check_Sqljs=참
종료 대상
종료 조건
다음
종료 조건
If Request.QueryString<>"" Then'제출 시 QueryString 감지
각 F_Get In Request.QueryString에 대해
If (Instr(LCase(Request.Form(F_Get)),"<script")<>0 또는 Instr(LCase(Request.Form(F_Get)),"</script>")<>0) 및 Instr(LCase (Request.Form(F_Get))," http://")<>0 그런 다음
Check_Sqljs=참
종료 대상
종료 조건
다음
종료 조건
기능 종료
CheckDataFrom()'제출된 데이터 소스 확인 : True는 데이터가 사이트 외부에서 제출되었음을 의미합니다.
CheckDataFrom=참
server_v1=Cstr(Request.ServerVariables("HTTP_REFERER"))
server_v2=Cstr(Request.ServerVariables("SERVER_NAME"))
mid(server_v1,8,len(server_v2))<>server_v2이면
CheckDataFrom=거짓
종료하면
기능 종료
Cheack_Sqljs 또는 CheckDataFrom인 경우
Response.Write "<Script Language=JavaScript>alert('실행이 금지되었습니다. 잘못된 작업입니다.');</Script>"
응답.끝()
종료 조건