[asp] sql Injection 방지 함수

저장프로시저 추척을 권장하나 수정할게 많으면 차후 차근차근 수정 하고 임시로 아래와 같이 한다.

<!–#include virtual=”./SQL_Injection_function.asp”–>

다음 파일을 include
<%

Dim key
Dim strFilter
Dim rgFilter
Dim nFilter
Dim incone
Dim resultbadstring
' 본 스크립트가 삽입된 페이지에 전달되는 모든 GET, POST 데이터에 대한 필터링 검사

' GET 데이터 값
for each key in request.QueryString
resultbadstring = badstring(trim(Request.QueryString(key)))
if resultbadstring = "error" then
response.write " Internet Explorer로 요청한 웹 페이지에 연결할 수 없습니다."
response.end
'response.redirect("about:blank")
end if
next

' POST 데이터 값
for each key in Request.form
resultbadstring = badstring(trim(Request.form(key)) )
if resultbadstring = "error" then
response.write " Internet Explorer로 요청한 웹 페이지에 연결할 수 없습니다."
response.end
end if
next

Function badstring(inboundstring)
inboundstring = LCase(inboundstring)

strFilter = " --,exec,xp_,sp_,1=1,DECLARE,VARCHAR(,@variable,sYsDaTaBaSeS,sElEcT" ' 필터링할 문자열
strFilter = LCase(strFilter) '소문자로 비교

rgFilter = Split(strFilter ,",") ' 문자열을 배열로 변경

If ( IsArray(rgFilter) ) Then
nFilter = UBound(rgFilter) ' 배열에 개수
end if

for incone = 0 to nFilter
if InStr(1,inboundstring,rgFilter(incone)) > 0 Then
badstring ="error"
exit for ' for문 탈출
else
badstring = "ok"
end if
next
End Function