티스토리 뷰

쿠키(cookie)

 - 단점 : 사용자의 정보가 노출되어 보안상 취약

 - 쿠키를 이용하는경우 서버에는 데이터가 하나도 남지 않는다.

 - 사용자의 정보가 로컬 컴퓨터(브라우저)에 저장이 된다.

이런점을 보완하기위해 나온것이 세션(session)이다.



세션(session)

 - 사용자의 정보를 서버에 저장


세션을 사용하기위해선 반드시

 - session_start(); → session_id 발행(쿠키를 통해)

 - 즉, 세션을 사용하기 위해서는 session_start() 함수를 먼저 호출해야만 한다.



# 인증 여부와는 상관없이 session_start(); 를 하게되면 클라이언트(웹브라우저)가 쿠키(session_id)를 갖게된다.






세션은 클라이언트가 session_id 하나만 알고있기 때문에 쿠키의 단점(사용자정보 노출)을 갖지는 않는다.

사용자 정보는 서버에 저장한다. 따라서 정보 노출의 위험이 현저하게 줄어든다.


서버에 저장되어있는 사용자정보를 확인해보자.


# 기본적으로 세션을 저장해두는 경로 확인은 session_save_path(); 로 확인 가능하다. 출력된 경로로 이동해보자.






# 세션 id 는 동일하게 해당 경로에서 서버에 저장하고있음을 확인할 수 있다. 






세션 id가 있다고 해서 로그인 된것은 아니다. 세션 id는 단지 위의 session_start 함수가 실행되면 무조건 발행이 된다.

session_id 함수를 실행해줘야 id가 발급이 된다.


# session_name과 session_id 는 쿠키를통해 전달되고 쿠키를통해 관리된다.


그럼 인증처리를 해보도록 하자.






세션을 이용한 인증처리


# history.back() 은 뒤로가기 버튼이다. 만약 입력값 없이 submit을 했을 시, 뒤로가기는 이렇게 구현한다.

단점은, 아이디만 입력하고 패스워드 없이 submit하면 뒤로갔을때 다시 작성했던 아이디는 남아있게된다

즉, 로그인  시도 이후에 기존 입력값들을 그대로 남기려면 history 객체를 이용하면 된다.


refresh(기존 입력값 초기화)하려면 메타태그를 쓰는방법이 있다.


이미 쿠키값은 발행이 됐기때문에, 이 사용자가 인증을 사용자인지 아닌지는 이것만 가지고는 판단이 어렵다.

그러한 정보들을 세션에 넣어준다 고 보면 된다.






# auth.php

session_id는 발행이 됐기때문에, 그냥 세션 내에서 직접 확인할수있도록만 해주면 된다.

인증을 통과하면 항목을 지정해줘서 파일 안에 데이터가 들어가게 된다.


이 사용자가 로그인 했는지를 판단하는 변수로 $_SESSION[is_login]를 뒀다.

$_SESSION[is_login] = 1; 일 경우 로그인을 한 것이다.






# login.php

auth.php 에서 $_SESSION[is_login]에 1을 할당하면 로그인 된 것이므로

login.php 에서는 if 조건을 위와같이 걸어서 로그인 여부를 판단할 수 있다.






# logout.php

logout 에서는 발행된 쿠키(session_id)를 없애고, 사용자 정보를 저장하고있는 세션을 지워서 새로 로그인을 하도록 해야한다. 


# session_destroy() : 세션에 저장된 사용자 정보를 지울때 사용한다.


session_destroy()로 세션값은 초기화가 되지만, 세션 아이디는 초기화 되지 않는다.

그렇기때문에 setcookie() 로 session_id를 초기화해준다.






# 로그아웃 하면 세션이 삭제된다.


댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함