새로운 자동로그인 기능을 구상해봤습니다. 어떤것같나요? > 자유게시판

자유게시판

새로운 자동로그인 기능을 구상해봤습니다. 어떤것같나요? 정보

새로운 자동로그인 기능을 구상해봤습니다. 어떤것같나요?

본문

방법은 이렇습니다. 먼저 "자동로그인" 이라는 체크박스를 체크하고

로그인을 시도합니다. 그리고 만약 이 아이디에 부여된 쿠키 값이 없다면

40자리의 쿠키를 하나 만듭니다. 

이미 있다면 그 값을 가져오고요.

 

값은 랜덤으로 a-z 나 0-9 중 하나로

만드는데 예를 들자면 5e8e7f4h5j6k4l5e4t5y5u6i4o4w5e6y1iu2i3f5 이런 값을 하나 만드는겁니다.

​그리고 MYSQL로 한 테이블에 id랑 쿠키값을 넣고 

 

(이미 다른유저가 이 쿠키를 가지고있다면

다른 값으로 합니다. 물론 그럴일은 없겠지만요.)

 

웹 사이트에 접속을 하면

5e8e7f4h5j6k4l5e4t5y5u6i4o4w5e6y1iu2i3f5​ 이 쿠키값을 가진 id를 찾아서

로그인 되게 하는거에요.

 

자동로그인을 구현할줄 몰라서 직접 구상을 해봤는데 어떤것같나요?

 

그리고 보통은 어떤 방법으로 구현하나요?

댓글 달아주시면 감사드리겠습니다 :) 

 

+ 수정 : 다시 생각해보니

로그인 시 쿠키값을 변경하면 그 쿠키로 로그인을 할 수가 없네요. ㅋㅋㅋ

그냥 로그아웃시 쿠키값이 바뀌게 해야겠습니다. :)

 

또 SQL Injection 등을 방지하려면

쿠키값을 가져오는것도 필터링을 해야겠구요.

추천
0

댓글 13개

브라우저를 끄면 변경이 아니라 로그아웃을 해야 값이 바뀌는거에요.
그래야 값이 적당히 바뀌니까요.

멤버 테이블에 넣는것도 괜찮은것같네요. 감사합니다.
그누보드와 비슷하네요

그누보드 자동로그인은

$key = md5($_SERVER['SERVER_ADDR'] . $_SERVER['REMOTE_ADDR'] . $_SERVER['HTTP_USER_AGENT'] . $mb['mb_password']);
set_cookie('ck_mb_id', $mb['mb_id'], 86400 * 31);
set_cookie('ck_auto', $key, 86400 * 31);

이와 같이

서버ip,사용자ip,사용자브라우저,사용자비밀번호 값을 md5로 조합하여서
쿠키값으로 저장합니다.
아이디도 따로 쿠키로 넣고요.
그리고 쿠키값을 조회 + 비교하여서 있다면 세션 등록되어서 로그인이 되죠.
결국 비슷한거 같네요.

자동로그인 할 때마다 쿠키값이 바뀌는 것이 다르겠네요.
아하.. 신기하네요 ㅋㅋ
전 만들때

1.쿠키에 정보를 넣지 않는다.
2.값은 유동적이어야 한다.

이 두 규칙을 지키면서 만들었는데 저것만 조금 다른것같네요.
근데 쿠키에 해시화된 정보를 넣는건 제가 뭐 보안이 어떻다 할 순 없지만
조금 제스타일이 아니네요. ㅋㅋ

그래도 IP 넣는건 IP 바뀌면 로그인이 안되니까
좀더 안전하겠네요.

뭐 그부분은 다른 방법으로 구현할 수 있겠지만요.

감사합니다!
IP가 바뀌면 자동로그인이 무효되도록 하면 보안상 유리한 점도 있지만,
모바일 기기처럼 IP가 수시로 바뀌는 경우에는 오히려 불편하기도 합니다.
즉, 각각 장단점이 있어요.

그누보드 방식처럼 md5를 사용하는 것보다는 완전히 무의미한 랜덤 문자열을 쓰면
DB를 찾아봐야 하는 수고가 필요하긴 해도 좀더 안전하겠죠.
md5가 그다지 안전한 암호화 알고리듬은 아니니까요.

제3자가 쿠키를 가로채는 것을 막으려면 httpOnly 속성을 활용하고
가능하면 SSL을 사용해야겠지만 이건 최종 사용자가 결정할 몫이고요...
유의미한 정보라고 할지라도 해쉬값으로 만들어버리는 순간 해당 값은 더이상 유의미하지 못합니다.
랜덤하게 스트링을 만드나, 특정정보로 해쉬값을 만드나 차이가 없습니다.
다만 특정정보로 해쉬값을 만드는 로직이 공개되어있다면 누군가가 해당 값을 만들어낼 수 있다는 점이 다를뿐이지요. ^^;;
유의미하다고까지 할 수는 없을지 몰라도, 완전 랜덤값과는 차이가 있지요.

예를 들어 제 서버의 회원디비가 일부 유출되었다 해도 비번은 모두 PASSWORD() 함수로 해싱되어 있으므로, 웬만큼 쉬운 비번이 아닌 이상 무차별대입 공격으로 비번을 알아내기는 어렵습니다.

그러나 비번의 해쉬값을 자동로그인 키 생성에 사용하는 소스가 공개되어 있으므로, 원래 비번을 뚫지 못하더라도 해쉬값만 있으면 IP와 user-agent를 적당히 조작해서 해당 사용자의 아이디로 자동로그인을 할 수 있게 되죠. 누군가가 같은 값을 만들어낼 수 있다는 점 때문에 생기는... 일종의 부채널공격 취약점입니다.

물론 이런 시나리오는 드물겠지만 (회원디비가 유출된 시점에서 대부분은 그냥 게임오버입니다) 해쉬값이 꼭 무의미하지는 않다는 증거가 될 수 있겠습니다.
쿠키값을 바꿔서 가로챈다는게 아니라
로그인을 할 때 쿠키값을 바꾸면 누군가
자신의 쿠키를 가져가도 소용이 없다는거죠.

근데 다시 생각해보니까 그렇게 쿠키를 바꾸면 본인도
로그인이 안되니 그냥 로그아웃 시 서버에 저장된 사용자 쿠키가
바뀌게 해야겠습니다.
보통 생각하신 방법대로 자동로그인을 구현합니다.
결국 자동로그인은 임의의 해쉬값를 쿠키에 구워두고, 해당 쿠키값을 가지고 있는 유저가 홈페이지에 들어왔을때, DB에서 해당해쉬값 찾아서 존재한다면 로그인을 시키는 것이지요.
전체 199,608 |RSS
자유게시판 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1402호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT