본문 바로가기

WEB/ASP

직접 폼 액선 디비입력 을 막자 - 스크랩 -데브피아


하하 제목만 거창하지요 -_-;;

음 오늘 쓸 내용은 아주 간단한 겁니다.

그러나 많은 분들이 간과하고 있는 내용이기도 합니다.

무엇이냐 하면 많은 사이트들의 게시판을 잘 보면 데이터를 쉽게 날리거나 조작할 수 있습니다.

바로 Reject 루틴을 무시해서 그런데...

모냐면 제 컴퓨터에 Html을 하나 비슷하게 만든 후 Form의 Action만 그 사이트 디비 조작부분으로 쏴버리면,

무슨 자바스크립트 체크라던가를 무시하고 디비에 들어가게 할 수 있죠.

밝힐 수는 없지만 한창 지금 주가를 올리고 있는 모 게임의 홈페이지도 이렇게 조작이 가능합니다.

제가 심심해서 공지사항까지 써본적도 -_-;;;

자 그럼 이제 막아야죠.

<%

Dim strReferPath

Dim strReferCheck

Dim strDomain

 

strReferPath = Trim(Request.Servervariables('HTTP_REFERER'))

if strReferPath <> '' then

strReferCheck = Split(strReferPath, '/')

strDomain = Trim(strReferCheck(2))

if strDomain <> Trim(Request.Servervariables('SERVER_NAME')) then

Response.Clear

Server.Transfer 'Reject.asp'

end if

else

Response.Clear

Server.Transfer 'Reject.asp'

end if

%>

 

이것만 Include 시키면 다 해결되겠지요^^


strReferPath = Trim(Request.Servervariables('HTTP_REFERER'))

머 다 아시겠지만. 현재 페이지가 Main_Result.asp 이고 이 전에 보여진 파일이 Main.asp라면

위의 값에는 도메인 이름까지 포함한 값이 들어갑니다. 예를들어 www.devpia.com 이라는 도메인이라면

www.devpia.com/Main.asp 라는 값이 구해지지요.

 

if strReferPath <> '' then

URL을 직접 주소창에 쳐서 접근한다면 어떨까요? 그러면 strReferPath라는 변수에는 값이 없게 됩니다.

Null은 아니구요. 걍 공백입니다. 왜냐면 직접 주소를 쳤으니 이전 페이지값을 알 수가 없거든요^^

 

if strDomain <> Trim(Request.Servervariables('SERVER_NAME')) then

strReferPath를 통해 분석한 도메인명 devpia가 맞는지 비교하는 부분입니다. 즉 다른 도메인에서 강제로 온 것을 막는 것이죠^^

로컬에서 html 만들고 form action을 URL로 걸어주는 것을 막기 위함입니다.

 


그 밑은 어떤 내용인지 잘 아시겠죠^^

사소한것 같아도 이런거 그냥 지나치시면 나중에 큰 일이 벌어질 수 있습니다.

저도 한번 그걸 경험했었죠.

많은 도움이 되길 바라며 이만^^
[출처] [본문스크랩] 사이트를 지키자!!! |작성자 알비지

반응형

'WEB > ASP' 카테고리의 다른 글

ASP 불법 게시물 자동 등록 막기  (0) 2009.01.19
[ASP소스] MD5 암호화소스  (0) 2009.01.19
Free ASP UPLOAD 컴포넌트  (0) 2009.01.14