개발 Q&A

제목 localstorage를 사용하여 로그인페이지 접속시 아이디와 패스워드 자동완성되어 있는 기능을 구현하려고 합니다
카테고리 HTML
글쓴이 정수리 작성시각 2016/12/16 14:49:16
댓글 : 3 추천 : 0 스크랩 : 0 조회수 : 14730   RSS

cookie를 사용하여 로그인페이지에 접속하였을 때 아이디와 패스워드가 자동완성되도록 하였습니다. 

이전에 이 기능에 대해 어떻게 구현해야 할지에 대해 글을 올렸을 때 

답변으로 localstorage나 cookie를 사용하시더 라구요 

localstorage와 cookie 차이점을 검색을 해보았으나 뚜렷히 감이 안잡히더라구요 

그렇다보니 이게 제가 만들려고하는 기능과 어울리지는에 대해 생각을 해보았습니다. 

localstorage의 경우 만료시간을 지정할수가 없더라구요 그에 반해 cookie는 만료시간을 지정할수 있구요 

제가 만들려는 기능의 경우 회사에서 외근나가는 직원분만 거이 사용하는 페이지입니다. 

직원분께서 로그인페이지에 접속하였을 때 아이디와 비밀번호가 자동완성이 되어 있도록 요구를 하셨습니다.(접속하는 기기의 경우 pc가 아닌 스마트폰으로 접속합니다.) 

그렇기에 어느정도의 기간이 지나면 cookie가 만료가 되기에 다시한번 아이디와 비밀번호를 적어야 할것이지만 

그에 반해 localstorage의 경우 사용자가 직접 삭제하지 않는 한 지워지지 않는다고 알고 있습니다. 

그렇다보니 localstorage가 더 맞는것 같기도 하구요 

보안상 어떤게 더나을까요...? 

localstroage의 경우 script에서 저장하고 불러오고 하더라구요 

그렇다 보니 궁금한 것이 

처음에 접속을 하였을 때 controlloer에서 localstorage에 데이터가 있는지 없는지 확인을 하여야 

하는데 php의 경우 localstorage와 관련된 함수가 없기에 확인을 할수가 없어 구현하는데 어려움이 있을 것 같습니다. 

php에서는 localstorage를 어떻게 사용해야 되죠?? 

그리고 마지막으로 궁금한것이 제가 현재 cookie를 사용하여 만든 기능의 경우 

최초 로그인페이지에 접속을 하였을때 아이디와 비밀번호를 입력하고 아이디/비밀번호 저장이라는 체크박스에 체크 후 

로그인을 하였을 때 아이디와 비밀번호를 확인 한후 cookie에 데이터를 넣어 저장합니다. cookie에 저장하는 데이터의 경우 

name값과 제가 임의로 특수문자와 영단어로 만든 문자열을 넣었습니다.(이렇게 해도 되는지 몰라 일단 이렇게 처리하였습니다) 

그리고 추후 로그인 페이지 접속하였을때 cookie에 값이 있는지 확인하고 있으면 값을 대조하여 

뷰페이지로 아이디와 비밀번호를 보내줍니다. 

문제가 비밀번호와 관련된 함수로 password_hash를 사용합니다. 이 함수는 단반향 함수이기에 암호화 한후에 

다시복호화 시킬수 없는 것으로 알고 있습니다. 

그렇기에 뷰페이지로 데이터를 넘길때 배열로 평문으로 아이디와 비밀번호 값을 보내주었습니다 

당연히 평문으로 보낼경우 아주 보안상 안좋을 텐데요 

이럴경우 아이디와 비밀번호를 어떻게 가져와서 어떤 처리를 한상태로 보내주어야 할까요?? 

어떤 분께서는 cookie 값에 따라 진짜 로그인 페이지와 다른 로그인페이지 이렇게 2개의 로그인페이지로 처리 하라고 

하셨는데 이해가 되지 않습니다. 

제가 많이 부족하여 어떻게 기능을 구현해야 할지 몰라 글을 올리게 되었습니다. 

긴글 읽어주셔서 감사드리며 조언 부탁드립니다.

 다음글 apache2 에서 php 확장자를 없애고 접근하는 방... (1)
 이전글 정규식을 만드는중인데요... (2)

댓글

박쥐 / 2016/12/16 15:56:12 / 추천 0

아이디기억 말고 비밀번호는 별도로 기억하게 하지 않는 것이 좋아보입니다.

차라리 세션 만료일을 길게 늘려서 로그인 상태를 유지하는 것을 추천드립니다.

 

if($this->input->post('remember_me'))
{
   $this->load->helper('cookie');
   $cookie = $this->input->cookie('ci_session'); // we get the cookie
   $this->input->set_cookie('ci_session', $cookie, '31557600'); // and add one year to it's expiration
}
정수리 / 2016/12/16 16:23:27 / 추천 0

@답변감사합니다.

아이디만 기억하게 하고싶은데 ...직원분이 비밀번호도 원하셔서..

일용직노동자 / 2016/12/29 16:15:23 / 추천 0

@정수리 보안 이슈가 발생할 수가 있어서 비밀번호 저장 특히 쿠키랑 로컬스토리지에 넣는건 비추천해드립니다.

단방향 해시로 암호화된 값을 넣는다고해도 최대한 안보이게 해야될 정보는 은닉화해야죠