로그인 유지란 브라우져를 닫고 컴퓨터를 리부팅한다고 할지라도, 사이트에 재접속하였을 경우 이전 로그인 상태를 유지한다는 의미입니다. 이번 글에서는 왜 이 기능을 구현하는지, 어떻게 구현하는지 개념에 대해 정리 해 보겠습니다.

먼저 배경상, 자기만 쓰는 컴퓨터 혹은 자기만 쓰는 컴퓨터 계정이기 때문에 가능한 기능입니다. 집이나 회사에서 자기만 로그인하는 환경이 만들어져 있다면 이 기능을 사용하는 것은 좋은 일 중의 하나입니다.

왜 이 기능을 구현하는 것일까요?

자주 사용하는 사이트에 진입하는 15초정도(대략 입니다)의 장벽을 없애자는 것입니다. 뭔가 귀찮은 것을 하나 없애자는 것이지요.

정말 저 이유 뿐일까요?

아닙니다. 요즘 유행하는 답은 간단합니다. "되도록이면 ID/비밀번호를 머리속에서 끄집어 내는일을 줄여 누군가가 엿 볼 기회를 없애버리자"입니다. 당연한 이야기입니다. 폼을 자동으로 채워주는 기능이나, 비밀번호 관리자 같은 것도, 일종의 키보드 타이핑을 줄이기 위한 것일 수 있지만, 키로거에게 힌트를 주지 말자입니다. 물론, 브라우져 내용을 직접 읽어 갈 수 있는(BHO를 이용한) 스파이웨어가 설치돼 있다면 무용하겠지만요.

그럼 어떻게 구현할까요?

이 기능은 쿠키를 기반으로 세션이 유지되는 웹어플리케이션에서 가능하며, 다음과 같은 방식으로 구현될 수 있습니다. 로그인이 유지된다고 하여도 마지막 사용후 대략 2 주정도 유지를 의미합니다.
  1. 아이디/비밀번호를 쿠키에 저장하여 매 페이지에서 전송되게 한다. 세션개념은 없다.
  2. 아이디/비밀번호(암호화한)를 쿠키에 저장하고, 로그인이 되지 않았을 경우에 세션을 만들어 로그인 과정이 일어나도록 한다.
  3. 로그인된 세션 ID를 저장하여 서버상에서 세션 수명을 길게 유지한다.
  4. 세션키 혹은 쿠키에 IP 주소를 확인할 수 있는 방법을 구현하여 세션키를 도둑맞아도 세션이 활성화되지 않도록한다.
1 번으로 구현하실 개발자님들은 반성하시구요. 2번은 오픈소스 어플리케이션이 아닐때 좋으나, 구현이 복잡합니다. 서버쪽 세션과 클라이언트가 생각하는 세션의 수명이 달라질 수 있으니까요. 3번은 가입자가 10만 이상되지 않을 때 모든 세션을 유지시켜 놓기에는 괜찮을 것 같습니다. 4번은 IP가 바뀌지 않는 환경에 있는 사람에게만 유효합니다.

만약 다시는 앉지 않을 곳에서 로그인 유지 기능을 해두고 왔다면, 이것 또한 다른 곳에서 제어할 수 있는 기능을 넣어 준다면 금상 첨화이겠지요.

오용될 일은 없을까요?

위의 4번을 제외하고 (4번도 한 하나의 IP를 이용한 공유기를 사용한다면 유효합니다만) 쿠키 값을 엿보는 것에 모두 취약합니다. 불행히도 일반적인 방법으로 쿠키로 전달되는 세션키를 암호화한다거나 절대 알 수 없도록 하는 해결책은 알려져 있지 않습니다. 그렇다고 세션은 HTTPS로만 유지할 수도 없는 노릇이죠.

자리를 누군가에게 내주었을 때, 생길 수 있는 문제가 있습니다. 따라서, 이런 종류의 서비스를 이용하고 있다면 반드시 윈도우 계정 관리가 우선 되어야 합니다.

끝으로..

많은 사이트에서 이런 기능을 제공합니다만, 사용자들에게는 편리할수록 보안은 멀어지기마련이다라는 말은 꼭 상기시켜주고 싶습니다.
신고
크리에이티브 커먼즈 라이선스
Creative Commons License
  1. J.Parker 2007.06.05 16:11 신고

    전 3번으로 선호하고 있습니다. 간혹 1번으로 대체 할 경우도 있지만... 전 쿠키보다 세션이 맘에 든답니다.

    • 최호진 2007.06.06 00:18 신고

      ㅋㅋ, 현재 그렇게 개발되어 있는 곳이 있지요.. ^^

+ Recent posts