쿠키
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 |
댓글