cgi 초보입니다.
글쓴이: charom / 작성시간: 목, 2010/11/04 - 7:06오전
CGI를 공부하고 있는데,
하나의 cgi파일에서 사용자가 처음 액세스하면,
1.입력화면(html)을 보여주고,
2.그것을 다시 cgi파일로 보내면(form의 action으로)
3.cgi파일에서 그것을 Query string의 Get으로 파싱하여,
4.다시 HTML로 결과를 보여주고자 합니다.
로직의 큰 그림중에서 사용자가 처음 접속한것인지 알아내는 방법이 있나요?
ENV{REQUEST_METHOD}를 해보면 첫 접속임에도 'GET'이 나오던데,
Forums:
...
요즘들어(요즘이라 할것도 없지만) 시니컬한 댓글들이 많이 있어 답변하기가 매우 조심스럽지만(실은 별로;;), 아는대로 답해봅니다.
우선 먼저 사용자가 처음 접속한것 이라는 말은 여러가지 의미를 내포하고 있습니다만
해당페이지를 접속한적이 있다/없다를 말씀하시는것이라면 구별해 낼수 있는 방법은 없습니다.
하지만 보통 이런경우 (예를들면 오늘하루 이창 보지 않기) 등등은 쿠키 존재 여부를 가지고 체크합니다만,
이부분이 client에 의존적이므로 사용자가 임의로 쿠키를 지워버린다던지, 타 브라우져로 접속해버리면 아무런 의미가 없는것 입니다.
"ENV{REQUEST_METHOD}를 해보면 첫 접속임에도 'GET'이 나오던데"
-> 이부분이 RFC2616 에서 정의한 Http header에 있는 값을 말씀하시는 것이라면,요청한 페이지에서 GET 방식으로 요청했다는 말입니다.
파일이나 DB를 이용하여 UID 저장하고 서버에서 Session Id를 가지고 체크 할수도 있겠지만, 위 내용만으로 봤을때 배보다 배꼽이 더 클듯 보입니다.
그렇다고 QueryString으로 input hidden atrribute를 이용하여 구분하는것은, 보안적인측에서 상당히 위험합니다.
Form Tag의 Method Attribute가 GET이 였을수도 있고 default(GET), 또 경유 페이지에서 dispatch 될 수도 있으므로 정확한 답을 드리기가 힘듭니다만,
적어도 Get이나 Post를 가지고 무엇을 판단할 수는 없습니다.
(간단히 proxy tool로 input 값들을 바꿔서 GET/POST 자유자재로 요청할수 있으므로)
P.S 입력과 출력 페이지를 따로 가지가는것이 바람직하다고 생각합니다.
댓글 달기