개발개발/Web

로그인 유지

꾸냥 2012. 12. 28. 17:00

페이스북이나 구글을 보면 한번 로그인 하면 창을 꺼도 로그인이 유지가 된다.


단순한 방법으로 처리하면 로그인 유지 토큰을 쿠키로 구워주는 방법인데. 이렇게 되면 문제가 토큰이 유출될 경우 다른 사람도 해당 사이트에 로그인을 안하고 볼 수 있다.


고로. 좀 더 고도화 시켜서 해당 로그인 유지를 강화해보려고 한다. 살짝 논리적으로....


[시나리오]

1. 로그인 유지를 선택하여 로그인 할 때 쿠키 구워줌

2. 쿠키에는 토큰과 사용자 구분값이 들어감. 토큰은 당연히 디비에도 기록됨

3. 쿠키:토큰 === 디비:토큰 이면 로그인 아니면 무시

4. 쿠키:토큰 으로 로그인시 새토큰을 발행하여 갱신시켜줌

5. 쿠키:토큰 으로 로그인하여 민감한 정보(개인정보)를 건들게 될 경우에는 패스워드 다시 물어봄

6. 다수의 브라우저에서 동일한 사용자가 로그인 할 경우도 있으니 다수의 토큰이 매칭됨

7. 토큰이 유출되었으면 가지고 있는 모든 토큰을 만료시킴.

8. 동일한 브라우저 + 다른 장소 에서 로그인 했을때에는 아이디 고정하고 패스워드만 다시 물어봄


대충 이정도 흐름을 하게되면 다수의 브라우저에서 사용해도 토큰이 꼬일일 없을테고. 쉽게 로그인해서 사용할 수 있음.


[구조]

쿠키 : 브라우저, 장소등을 구분할 수 있는 토큰값을 만들어 제공한다. (이동 매체의 경우 IP는 매번 바뀌기 때문에 구분자 선택을 잘 해야됨)

디비 : 쿠키에 저장된 정보의 키값 + 개인정보 + 만료시간 등등


[고민]

- 보안을 약하게해서 편하게 접근하면 분명 반대쪽 도용 문제가 발생될때 이걸 처리할 수 있는 방법은???

- 어떤 보안 문제가 있을까???

- 내가 토큰 가지고 장난 치는 사람이라면 어떻게 할까나???


[참고사이트]

http://jaspan.com/improved_persistent_login_cookie_best_practice

반응형