본문으로 바로가기

사이트를 지키자!!!

category 웹/웹.html.스크립트 2008. 2. 27. 17:07

많은 사이트들의 게시판을 잘 보면 데이터를 쉽게 날리거나 조작할 수 있습니다. 바로 Reject 루틴을 무시해서 그런데...
모냐면 제 컴퓨터에 Html을 하나 비슷하게 만든 후 Form의 Action만 그 사이트 디비 조작부분으로 쏴버리면, 무슨 자바스크립트 체크라던가를 무시하고 디비에 들어가게 할 수 있죠.

밝힐 수는 없지만 한창 지금 주가를 올리고 있는 모 게임의 홈페이지도 이렇게 조작이 가능합니다.
제가 심심해서 공지사항까지 써본적도 -_-;;; 자 그럼 이제 막아야죠.

예를 들어 www.devpia.com 내에 어떤 게시판이 있다고 칩시다. 그러면 www.devpia.com 내의 html이 아닌 다른 URL이나 주소창에 직접 URL을 치고 들어오려하는 것을 막아야겠지요.

<%

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로 걸어주는 것을 막기 위함입니다.


그 밑은 어떤 내용인지 잘 아시겠죠^^
사소한것 같아도 이런거 그냥 지나치시면 나중에 큰 일이 벌어질 수 있습니다.
저도 한번 그걸 경험했었죠.

많은 도움이 되길 바라며 이만^^