'기능: 안전한 문자열 감지 기능
'이름:SafeCheck
'매개변수: CheckString, CheckType, CheckLength
'설명:
'Checkstring 감지할 문자열: 모든 문자.
'CheckType 감지 유형 0 일반 짧은 문자 1 숫자 2 날짜 3 돈 4 인코딩 HTML5 디코딩 HTML6 로그인 문자열 7 공격 방지 감지
'CheckLength는 유형 길이를 감지합니다. 유형은 int이고 돈인 경우 소수점 위치입니다.
'반환 값: 테스트를 통과하면 올바른 문자열을 반환하고,
'실패하면 오류 코드 SYSTEM_ERROR|ERROR_CODE를 반환합니다.
'스크립트 작성:SnowDu(DU雪.NET)
'웹사이트:http://www.snsites.com/
'웹:http://www.downcodes.com/
'-------------------
함수 SafeCheck(CheckString,CheckType,CheckLength)
오류 발생 시 다음 재개
ErrorRoot="SYSTEM_ERROR|"
checkString=""이면
SafeCheck=ErrorRoot&"00001"
종료 기능
end if
CheckString=Replace(CheckString,"'","'")
사례 CheckType 선택
사례 0
CheckString=트림(CheckString)
SafeCheck=왼쪽(CheckString,CheckLength)
사례 1
isnumberic(CheckString)이 아니면
SafeCheck=ErrorRoot&"00002"
종료 기능
또 다른
SafeCheck=왼쪽(CheckString,CheckLength)
종료하면
사례 2
tempVar=IsDate(CheckString)
TempVar가 아닌 경우
SafeCheck=ErrorRoot&"00003"
종료 기능
또 다른
케이스 CheckLength 선택
사례 0
SafeCheck=FormatDateTime(CheckString,vbShortDate)
사례 1
SafeCheck=FormatDateTime(CheckString,vbLongDate)
사례 2
SafeCheck=CheckString
선택 종료
종료하면
사례 3
tempVar=FormatCurrency(CheckString,0)
만약 그렇다면
SafeCheck=ErrorRoot&"00004"
종료 기능
또 다른
SafeCheck=FormatCurrency(CheckString,CheckLength)
종료하면
사례 4
sTemp = 체크스트링
IsNull(sTemp) = True인 경우
SafeCheck=ErrorRoot&"00005"
종료 기능
종료 조건
sTemp = 바꾸기(sTemp, "&", "&")
sTemp = 바꾸기(sTemp, "<", "<")
sTemp = 바꾸기(sTemp, ">", ">")
sTemp = 바꾸기(sTemp, Chr(34), """)
sTemp = 바꾸기(sTemp, Chr(10), "<br>")
SafeCheck = 왼쪽(sTemp,CheckLength)
사례 5
sTemp = 체크스트링
IsNull(sTemp) = True인 경우
SafeCheck=ErrorRoot&"00006"
종료 기능
종료 조건
sTemp = 바꾸기(sTemp, "&", "&")
sTemp = 바꾸기(sTemp, "<", "<")
sTemp = 바꾸기(sTemp, ">", ">")
sTemp = 바꾸기(sTemp, """, Chr(34))
sTemp = 바꾸기(sTemp, "<br>",Chr(10))
SafeCheck = 왼쪽(sTemp,CheckLength)
사례 6
s_BadStr = "' &<>?%,;:()`~!@#$^*{}[]|+-=" & Chr(34) & Chr(9) & Chr(32)
n = 렌(s_BadStr)
IsSafeStr = 참
i = 1에서 n의 경우
Instr(CheckString, Mid(s_BadStr, i, 1)) > 0이면
IsSafeStr = 거짓
종료 조건
다음
IsSafeStr이면
SafeCheck=왼쪽(CheckString,CheckLength)
또 다른
SafeCheck=ErrorRoot&"00007"
종료 기능
종료하면
사례 7
s_Filter="순 사용자|xp_cmdshell|/add|select|count|asc|char|mid|'|""|"
S_Filter=S_Filter&"삽입|삭제|삭제|잘라내기|에서|%|선언|-"
S_Filters=분할(S_Filter,"|")
isFound=거짓
i=0에서 ubound(S_Filters)-1까지
if Instr(lcase(CheckString),lcase(S_Filters(i)))<>0 then
isFound=true
종료
종료하면
다음
isFound라면
SafeCheck=ErrorRoot&"00008"
종료 기능
또 다른
SafeCheck=왼쪽(CheckString,CheckLength)
종료하면
선택 종료
함수 종료