ClassicASP Request("key") 를 사용하지 말자!!!
페이지 정보
본문
<%
'〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓
'〓〓〓 Request 값을 구하는 함수 〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓
'〓 GET 과 POST 두가지 방법 모두로 값이 넘어올 때에는
'〓 Request.QueryString 과 Request.Form 두가지를 모두 사용해야 합니다
'〓 이럴때 보통 Request(아이템명) 이런 방법을 사용합니다.
'〓 하지만 이렇게 사용하면 Request.ServerVariables 를 먼저 찾게 되어
'〓 성능이 떨어지게 됩니다. 그래서 일단 GET 를 먼저 그 다음 POST 를
'〓 찾아서 값을 가져오도록 합니다.
'〓 하지만 POST 를 먼저 받아야 할때도 있어 Method 를 선택할 수 있도록
'〓 파라미터로 받아서 처리하고 있습니다.
'〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓
Function fnRequestValue(strRequestItem, method)
Dim strRequestValue, strQueryString, strForm
strQueryString = Trim(Request.QueryString (strRequestItem))
strForm = Trim(Request.Form (strRequestItem))
If method = "POST" Then
If Len(strForm) > 0 Then '''= POST 로 넘어오는 값이 있으면
strRequestValue = strForm
ElseIf Len(strQueryString) > 0 Then '''= GET 로 넘어오는 값이 있으면
strRequestValue = strQueryString
Else
strRequestValue = ""
End If
Else
If Len(strQueryString) > 0 Then '''= GET 로 넘어오는 값이 있으면
strRequestValue = strQueryString
ElseIf Len(strForm) > 0 Then '''= POST 로 넘어오는 값이 있으면
strRequestValue = strForm
Else
strRequestValue = ""
End If
End If
fnRequestValue = strRequestValue
End Function
%>
사용법은
UserNick = Left(fnRequestValue("nick", "POST"), 20)
이렇게 하면 POST 값을 먼저 검색하고, GET 를 쓰면 GET 를 먼저 검색합니다.
그리고 Left 를 이용해서 잘라서 쓰도록 하는 이유는
악의적인 사용자가 파라미터에 DB 에 영향을 줄 수 있는 문자열을 추가했을 경우 심각한 상황이 발생할 수도 있기 때문에 미리 정의된 파라미터의 최대 길이만큼 잘라서 쓰는 습관을 들여야 하겠습니다.
받아오는 파라미터는 모두 ...+_+
자료인용
http://cafe.naver.com/staeho.cafe?iframe_url=/ArticleRead.nhn%3Farticleid=52
'〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓
'〓〓〓 Request 값을 구하는 함수 〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓
'〓 GET 과 POST 두가지 방법 모두로 값이 넘어올 때에는
'〓 Request.QueryString 과 Request.Form 두가지를 모두 사용해야 합니다
'〓 이럴때 보통 Request(아이템명) 이런 방법을 사용합니다.
'〓 하지만 이렇게 사용하면 Request.ServerVariables 를 먼저 찾게 되어
'〓 성능이 떨어지게 됩니다. 그래서 일단 GET 를 먼저 그 다음 POST 를
'〓 찾아서 값을 가져오도록 합니다.
'〓 하지만 POST 를 먼저 받아야 할때도 있어 Method 를 선택할 수 있도록
'〓 파라미터로 받아서 처리하고 있습니다.
'〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓
Function fnRequestValue(strRequestItem, method)
Dim strRequestValue, strQueryString, strForm
strQueryString = Trim(Request.QueryString (strRequestItem))
strForm = Trim(Request.Form (strRequestItem))
If method = "POST" Then
If Len(strForm) > 0 Then '''= POST 로 넘어오는 값이 있으면
strRequestValue = strForm
ElseIf Len(strQueryString) > 0 Then '''= GET 로 넘어오는 값이 있으면
strRequestValue = strQueryString
Else
strRequestValue = ""
End If
Else
If Len(strQueryString) > 0 Then '''= GET 로 넘어오는 값이 있으면
strRequestValue = strQueryString
ElseIf Len(strForm) > 0 Then '''= POST 로 넘어오는 값이 있으면
strRequestValue = strForm
Else
strRequestValue = ""
End If
End If
fnRequestValue = strRequestValue
End Function
%>
사용법은
UserNick = Left(fnRequestValue("nick", "POST"), 20)
이렇게 하면 POST 값을 먼저 검색하고, GET 를 쓰면 GET 를 먼저 검색합니다.
그리고 Left 를 이용해서 잘라서 쓰도록 하는 이유는
악의적인 사용자가 파라미터에 DB 에 영향을 줄 수 있는 문자열을 추가했을 경우 심각한 상황이 발생할 수도 있기 때문에 미리 정의된 파라미터의 최대 길이만큼 잘라서 쓰는 습관을 들여야 하겠습니다.
받아오는 파라미터는 모두 ...+_+
자료인용
http://cafe.naver.com/staeho.cafe?iframe_url=/ArticleRead.nhn%3Farticleid=52
댓글목록
등록된 댓글이 없습니다.