본문 바로가기
WEB_Security

10. 쿠키 & 세션

by Jnamelight 2017. 5. 24.

쿠키


1 . 쿠키 ( cookie ) // 웹은 TCP와 다르게 세션이 자동으로 끊기기 때문에 

  1). 아이디와 패스워드를 입력 ( 인증 )

      - 디비에서 입력한 아이디와 패스워드를 조회


  2). 쿠키를 발행 : 쿠키를 굽는다

      - 쿠키를 통해서 인증을 한다.  

      - setcookie()  //함수를 통해 쿠키를 구워줌

      - 쿠키의 값은 어렵게 해야한다! 쉬우면 유추가 가능해짐 보안에 취약!


  3). 로그인 이후에는 발급받은 쿠키를 다시 서버에게 전송함으로써,

      - 인증된 사용자임을 증명.


* 아파치를 사용하면 아파치측에서 다 해주지만 웹어플리케이션은 직접 해주어야한다.


쿠키 예제



일단은 쿠키 예제를 앞서 DB에 접속해서 cookie 칼럼을 하나 추가해준다. 



그후 위와같이 소스를 만들어준다 저번에 만들었던 소스에다가 추가

각각의 역할은

1 : 로그인한 결과가 DB와 비교했을때 성공하면, 쿠키를 DB에 추가해주는 역할을한다.

2 : 만약 쿠키가 DB에 있는지 확인한다

3: 확인한결과가 현재 쿠키와 비교시 같다면 세션유지.(로그인 성공)



여태까지의 소스를 확인



쿠키가 들어갔다고 나온다 



실제로 들어갔는지 확인하기 위해 직접 mysql에 접속하여 확인

결과적으로 잘들어갔다.



그럼 이번에는 로그아웃을 추가해보도록하자

1: 로그아웃 을 만들어 클릭시 GET으로 값을 넘긴다.

2: GET의 값이 있고 그값이 일치한다면 쿠키를 해제시켜준다.

(* 각각의 <meta> 를 통해서 리프레쉬를 자동적으로 한번식 해주도록 하여 정적인 효과를 주었다 )



결과화면



로그아웃을 클릭시 쿠키값이 없는것을 확인할수 있다.



세션


쿠키 


   - 보안상 취약 

   - 로컬 컴퓨터에 저장 ( 익스플로어 , 크롬은 디비에 저장해서 없음 )



세션


   - 사용자 정보를 서버에 저장한다.

   - 한번 사용된 세션 정보를 브라우저가 종료되면 다시 사용할 수 없다.


   - session_start(); 함수를 사용해서 세션을 사용할수 있도록한다.


즉 쿠키와 세션의 차이는 로컬에 저장하느냐, 서버에 저장하느냐의 차이이다!! 


예제는 쿠키와 다르게 세션은 session_start() 함수를 통해서 모든 세션이 자동으로 서버측에 저장되기 때문에 따로 DB를 해줄 필요가 없어 더 쉽다.



1 :  세션을 시작해주어 세션을 만든다.

2: 세션 변수에 원하는 변수를 넣는다

3: 로그아웃시 세션 종료 ( 세션역시 쿠키에 저장)

4: 세션값이 일치하면 로그인 성공



역시 결과화면



세션은 조금 특히하게 PHPSESSID 이름으로 저장되는대 

이말은 PHP의 session의 id 이름이라는 뜻으로 PHP측에 저장되어있다는 소리



확인하기위해서 경로를 

#>cd /var/lib/php/session/   으로 들어가서 파일보기한 결과

일치하는 이름의 세션이 있는 것을 확인할수 있다.


'WEB_Security' 카테고리의 다른 글

12. XSS 공격  (0) 2017.05.29
11. 제로보드 실습환경 구축  (0) 2017.05.26
09. 인증 (로그인 예제 , PHP)  (0) 2017.05.22
08. 데이터베이스 실습 (PHP)  (0) 2017.05.19
07. 데이터베이스 실습  (0) 2017.05.18

댓글