ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 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 if

     injection = tmp_request_str
    End Function
    '#####################################################################

    '#####################################################################
    ' 함수설명 : DB 쿼리문에 문제를 일으키는 문자를 제거하여 반환한다.
    ' Ex) queryCheck(query)
    Function queryCheck(query)
     Dim strquery

     strquery = 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
Designed by Tistory.