POST /register/ - 회원가입
POST /unregister/ - 탈퇴
POST /logout - 로그아웃
보통은 위와 같은 request 용 응답 경로를 만들고, Ajax 나 메인 공간에서 Form으로 발송하는 식으로 구현할 수 있다.
<form action="/logout" method="POST">
<input type="submit">
</form>
보통 사용자가 로그인하는 경우 로그인 정보는 세션 및 쿠키에 저장되어, 사용자의 별 다른 입력 없이도 세션이 유지된다면 클릭만으로 서비스를 사용할 수 있다.
하지만 위와 같은 방법에는 심각한 보안 문제가 존재한다.
POST /logout - 로그아웃
<form action="/logout" method="POST">
<input type="submit">
</form>
분명 /logout 은 POST로 요청을 받은 경우에만 수행된다. 하지만 <form> 태그는 반드시 본인 사이트가 아니라, 다른 사이트를 출처로 하여금 내 사이트에 요청이 발생할 수 있다. 즉 다른 사이트에서 action 에 상대 경로가 아닌 절대 경로 형식으로 URL 을 넣으면 외부 사이트에서 넘어와 작업을 수행할 수 있게 된다.
따라서 위와 같은 상황에서는 보통 Referer 을 검증하여 어떤 사이트를 출처로 접근 했는지 필터링하는 작업이 필요하다.