개발 Q&A

제목 선배님들 세션로그인 질문입니다.ㅠ
카테고리 기타
글쓴이 KIMJONGJIN 작성시각 2019/03/23 15:07:09
댓글 : 4 추천 : 0 스크랩 : 0 조회수 : 9907   RSS

제가 만드려는 것은 아래와 같습니다.

1. 네이버와 같이 로그인을 끈을 수 있는 기능을 만들려고합니다.

- 한 아이디를 PC 크롬으로 들어왓을때 PC 사파리로 들어왔을때 각각 별도의 세션이 생성되고 유저가 선택하여 해당 세션을 끈어버릴 수있게

2. 브라우저를 껏을때도 로그인을 유지

 

1번, 2번 사항을 하기 위해 결국 세션을 사용하려고 합니다.

세션이란게 결국 클라이언트쪽에 ssid를 넘겨 클라이언트가 ssid 기반으로 서버쪽으로 인증하는거라고 알고있습니다. 

우려하는점은 브라우저를 껏을때도 로그인을 유지시켜주려면

결국 쿠키에 담는 ssid가 엄청 긴기간으로 줄텐데요.  여기서 우려하는점이 쿠키를 갖고 있는 시간이 길수록 보안이 취약하고  탈취당했을 경우는 더 난감해질거라고 생각합니다.

 

1. 제가 만약 PC방에서 로그인을하고 로그아웃 처리없이 브라우저를 끄면 실제 브라우저에는 쿠키가 남아있어 계속 저 인척하고 활동할 수도 있고...

2. cookie에 심어진 ssid가 httponly 옵션으로 만들어진 쿠키가 아니여야만 하는 상황이라면 xss로 탈취도 될수있다고 가정하겠습니다.

- 물론 각 영역에서 xss에 대한 방비를 하겠지만 어딘가 게시판쪽에서 뚤려서 쿠키를 탈취를 당한다면...

 

여러가지 이런 보안대책 access_token, refresh_token등등을 생각해봤찌만 제가 하려는 기능에 접목시킬수가 없을 것같더라구요.

실제 현업에서 서비스해보신 선배님들은 어떻게 이 문제를 해결하셨는지 궁금합니다.

지금까지 읽어주셔서 감사합니다.

 다음글 CI_Email 라이브브러리에서 protocol = m... (3)
 이전글 db접속 관련 (2)

댓글

변종원(웅파) / 2019/03/25 10:22:33 / 추천 0

1. 사용자가 선택해서 만든 상황이라 그런 것까지 생각하면 브라우저를 껐을 경우 세션이 사라지도록 해야합니다.

xss, csrf, sql injection 에 대한 방비는 정확하게 하고 고려해야할 상황과 고려대상이 아닌 상황을 잘 구분하셔야 개발범위 산정이 용이합니다.

엽토군 / 2019/03/26 09:21:18 / 추천 0

1. 사용자를 비난하는 것은 보통 해결책이 아니지만... 그건 PC방에서 로그아웃을 하고 가지 않는 사용자가 나쁜 겁니다. 막말로 서버/브라우저 입장에서 사용자가 집에서 로그인한 건지 PC방에서 로그인한 건지 어떻게 아나요?

2. 쿠키 유지 시간이 길어지는 것 자체가 특별히 문제가 될 것 같지는 않습니다. 우려하셔야 할 사항은 오히려 쿠키의 값을 다른 (아직 삭제 안 되고 잘 돌아가는) 세션값으로 변경할 수 있는 경우에 대해서입니다. 그런데 이것도 httponly 설정된 쿠키에 대해서는 안되는 일일 텐데요.

3. JWT 사용을 고려해 보세요. 서버에서만 해독할 수 있는 암호문을 사용자에게 던져주고 필요할 때마다 사용자가 그 암호문을 제출하도록 하는 방식인데, 암호문 내용으로 각종 정보(사용자명, 로그인시 요청헤더 값, 만료될 시점 등)를 포함시킬 수 있습니다.

kaido / 2019/03/26 12:09:50 / 추천 0

다른건 둘째치고 일단 조건이 상반 되네요

 

브라우저를 껏을때도 로그인을 유지

만약 PC방에서 로그인을하고 로그아웃 처리없이 브라우저를 끄면 실제 브라우저에는 쿠키가 남아있음

 

로그인을 유지 하라는 것인가요? 로그인을 유지 시키지 말라는 것인가요?

 

브라우저를 꺼도 세션이 유지 되는것은 브라우저의 좀비 쿠키 역할입니다 [캐시라고도 하지만 실제 세션유지는 좀비가 남아있는것]

 

저도 이전에 브라우저 별로 로그인 세션 끊기 요청이 들어와서 찾아본적이 있는데, JAVA처럼 VM으로 관리를 하는 타입이 아니면 세션별 공유에 대한 정보교환이 어렵습니다.

 

연관검색으로 브라우저 닫기 버튼 [X] 버튼을 클릭시 세션 유지 삭제에 대한 이벤트를 찾아보았지만, 이는 내부 객체이라서 접근이 안됩니다. 

KIMJONGJIN / 2019/03/27 21:53:06 / 추천 0
정말 많은 도움이됐습니다

상반된내용을 만드려고하니 결국 할수가없는거였네요
조언 감사드립니다

JWT는 좀더 공부해봐야겠네요
감사합니다