탭 기능이 있는 브라우저에서 쿠키 테스트를 하다가 이상한 문제점에 맞닥뜨렸다.
asp 나 jsp 모두 쿠키에 기한을 별도로 설정하지 않으면, 브라우저가 닫혔을때 쿠키는 해제된다.
그런데, 탭을 닫았다가 다시 접속해도 쿠키가 지워지지 않는 것이다.
jsp 의 문제인가 싶어 이런저런 테스트를 해봤는데, asp 도 마찬가지였다.
즉, 탭(TAB)만 닫아서는 쿠키가 없어지지 않고 반드시 브라우저 자체를 종료 해야만 쿠키가 없어진다.
따라서, 크롬 같이 여러탭을 열어서 사이트에 접속했다가 로그인했던 사이트의 탭을 닫아도 그 사이트의 쿠키는 지워지지 않고 살아 있다.
크롬, IE9 에서 모두 같은 현상을 보였다.
탭만 닫는 것이 아니라 브라우저 자체를 종료했다가 다시 접속했을때는 두 브라우저 모두 쿠키가 없어졌다.
아마도, 기존의 웹프로그래밍 언어들이 이러한 탭 기능을 미처 예상하지 못하고 만들어졌기 때문인것 같다.
쿠키의 기한이 설정되지 않은 경우, 해당 쿠키는 브라우저의 종료를 시점으로 삭제되기 때문이다.
하지만, 요즘처럼 탭 기능이 지원되는 브라우저들은 브라우저 자체를 종료하지 않고 사이트를 열었던 탭만 닫는 것은 그저 탭만 닫히는 것일뿐 브라우저 자체가 종료되지 않았기 때문에 쿠키는 계속 살아있게 되는 아이러니가 발생한다.
만약, 여러명이 한대의 컴퓨터를 사용하게 된다면 약간의 문제가 발생한다.
로그인한 사용자가 자신이 로그인했던 사이트의 탭만을 닫고 브라우저를 종료하지 않았을 경우다.
사용자는 자신이 로그인했던 사이트의 탭을 닫았기 때문에 당연히 로그인이 끊겼을 것으로 생각하게 된다.
하지만, 만약 다른 사용자가 열려있는 브라우저에서 이전의 사용자가 접속했던 사이트에 접속하게 되면 여전히 로그인한 상태로 접속이 된다.
이 문제를 해결하기 위해,
부수적으로 쿠키의 기한을 설정하는 방법을 쓸수도 있다.
하지만, 쿠키의 기한을 설정한다고 해도 위에서 언급한 문제를 근본적으로 해결하는 것은 아니다.
단지, 타 사용자가 열려있는 브라우저에서 기존 사용자가 접속했던 사이트를 여는 시점이 한참 뒤여서 시간적으로 쿠키의 기한이 만료된 시각이기를 바라는 방법일 뿐이다.
원하는 방법은, 브라우저를 닫지 않고 단지 탭만 닫았을때 쿠키가 소멸되는 것이다.
이와 관련해서 검색을 해보았으나(네이버&구글링), 국내 및 해외에서도 이와 관련한 언급이나 관련 자료가 없는것 같다.
나름 보안이슈가 될 수 있는 문제인데, 이와 관련한 것들이 언급되고 있지 않다는 것이 아쉽다.
앞으로, 웹언어들이 이런 문제에 대비하여 브라우저의 탭이 닫힐때 쿠키가 소멸되는 방식이 나와야 하지 않을까 싶다.
테스트한 객체는 다음과 같다.
ASP: Response.Cookies
JSP: response.addCookie

















덧글