-
sql_injection 정리Web Program/ASP/PHP/JSP 2008. 5. 23. 02:04
흠....드디어..내껏도..문제가 생겼군...물론 내가 전부 만들어쓰는 소스는 아니지만..
첨부터 약간 불안불안 했다..흠..그래도 계속 피와 살이 되게 소스를 수정해 나가야 겠다~
'#####################################################################
' 함수설명 : SQLInjection을 방지하기 위한 Reqeust문자열 체크함수
' Ex) injection(Request문자열,문자true/false숫자,최대문자열갯수)
'첫번째 인수로 Request문자열과
'두번째 인수는 넘겨진 문자열이 문자형인지 숫자형인지 체크하는 값(문자형인 경우 true,숫자형인 경우 false)
'세번째 인수는 문자열 넘길때 최대문자열 갯수로서 0으로 지정시 값을 체크하지 않는다.
Function injection(tmpstr,isstr,maxlength)
Dim tmp_request_str
if trim(tmpstr) = "" then
'받은 값이 없는경우 그냥 넘겨줌
tmp_request_str = trim(tmpstr)
else
if isstr = true then
'문자열인경우
if maxlength > 0 then
'문자열 입력 갯수가 지정된경우
if maxlength < len(tmpstr) then
'지정된 갯수와 입력된 갯수를 비교하여 입력된 갯수가 더 큰 경우
Call Alert_Window("입력 문자열 오류입니다. 입력값을 초과하였습니다.\n\n다시 확인하여 주시기 바랍니다.","back")
else
tmp_request_str = queryCheck(tmpstr)
end if
else
tmp_request_str = queryCheck(tmpstr)
end if
else
'숫자인경우
if isNumeric(tmpstr) then
'실제 숫자인지 파악
if maxlength > 0 then
'숫자의 입력범위가 지정된 경우
if len(tmpstr) > int(maxlength) then
'지정된 숫자의 범위보다 입력값이 큰경우
Call Alert_Window("입력 범위 초과오류입니다.\n\n다시 확인하여 주시기 바랍니다.","back")
else
tmp_request_str = tmpstr
end if
else
tmp_request_str = tmpstr
end if
else
Call Alert_Window("입력 오류입니다. 숫자만 입력 가능합니다.\n\n다시 확인하여 주시기 바랍니다.","back")
end if
end if
end ifinjection = tmp_request_str
End Function
'#####################################################################'#####################################################################
' 함수설명 : DB 쿼리문에 문제를 일으키는 문자를 제거하여 반환한다.
' Ex) queryCheck(query)
Function queryCheck(query)
Dim strquerystrquery = replace(query,"'","''")
strquery = replace(strquery,"--","")
strquery = replace(strquery,"/*","")
strquery = replace(strquery,"*/","")
strquery = replace(strquery,"xp_","")
strquery = replace(strquery,"sp_","")
strquery = replace(strquery,"@variable","")
strquery = replace(strquery,"@@variable","")
strquery = replace(strquery,"sysobject","")
strquery = replace(strquery,"declare","")
strquery = replace(strquery,"select","")
strquery = replace(strquery,"update","")
strquery = replace(strquery,"delete","")
strquery = replace(strquery,"insert","")
strquery = replace(strquery,"shutdown","")
strquery = replace(strquery,"drop","")
strquery = replace(strquery,"exec","")
strquery = replace(strquery,"execute","")
strquery = replace(strquery,"truncate","")
strquery = replace(strquery,"1=1","")
strquery = replace(strquery,";","")
queryCheck = strquery
End Function
'#####################################################################'Web Program > ASP/PHP/JSP' 카테고리의 다른 글
php[날짜 추가시] (0) 2009.01.05 PHP 파일업로드 iconv (0) 2008.11.13 Dictionary 객체 (0) 2008.07.13 ASP DBHelper 추가사항 (0) 2008.05.23 ..ASP Class를 만드는 방법 (0) 2008.03.26