반응형
쿠키의 옵션
Session 쿠키 와 Permanent 쿠키
웹브라우저를 끄면 사라지는 휘발성 쿠키를 Session cookie라고 하고 웹브라우저를 꺼도 사라지지 않는 쿠키를 Permanent cookie라고 한다.
var http = require('http');
var cookie = require('cookie');
http.createServer(function(request, response){
console.log(request.headers.cookie);
var cookies = {};
if(request.headers.cookie !== undefined){
cookies = cookie.parse(request.headers.cookie);
}
console.log(cookies.yummy_cookie);
response.writeHead(200, {
'Set-Cookie':[
'yummy_cookie=choco',
'tasty_cookie=strawberry',
`Permanent=cookies; Max-Age=${60*60*24*30}`
]
});
response.end('Cookie!!');
}).listen(5000);
- Session cookie는 뒤에 아무것도 붙어있지 않지만 Permanent cookie는 Max-Age=${60*60*24*30}와 같이 뒤에 붙여준다면 휘발성이 아닌 언제까지 쿠키가 유지될 것인지 시간을 조절할 수 있게 된다. ${}안의 식은 시간을 계산한 값이다.
- 숫자 1당 초로 인식되며 60곱하기 60곱하기 24 곱하기 30는 한 달이다.
크롬 개발자로 쿠키 데이터를 보면 Permanent cookie가 적용된 쿠키는 지금으로부터 한 달 뒤에 만료된다고 표시되어 있는 것을 확인 할 수 있다. 오늘 날짜는 2021-01-15이다.
Secure 와 HttpOnly
- Secure는 웹브라우저와 웹서버가 https로 통신하는 경우만 웹브라우저가 쿠키를 서버로 전송하는 옵션이다.
- HttpOnly는 자바스크립트의 document.cookie를 이용해서 쿠키에 접속하는 것을 막는 옵션이다. 쿠키를 훔쳐가는 행위를 막기 위한 방법이다.
var http = require('http');
var cookie = require('cookie');
http.createServer(function(request, response){
console.log(request.headers.cookie);
var cookies = {};
if(request.headers.cookie !== undefined){
cookies = cookie.parse(request.headers.cookie);
}
console.log(cookies.yummy_cookie);
response.writeHead(200, {
'Set-Cookie':[
'yummy_cookie=choco',
'tasty_cookie=strawberry',
`Permanent=cookies; Max-Age=${60*60*24*30}`,
'Secure=Secure; Secure',
'HttpOnly=HttpOnly; HttpOnly'
]
});
response.end('Cookie!!');
}).listen(5000);
보안을 하고 싶은 쿠키 값 뒤에 Secure와 HttpOnly을 붙여준 것을 확인 할 수 있다.
http로 통신하지 않자 Secure을 붙여 놓은 쿠키 Secure=Secure는 크롬 개발자에서 확인 할 수 없었다.
자바스크립트를 이용하여 콘솔창에서 cookie 값들을 나열해보았지만 HttpOnly을 붙여준 쿠키 HttpOnly=HttpOnl는 출력되지 않았다. 중요한 정보를 악의를 가지고 훔치려는 것을 방지할 수 있게 되었다.
path 와 domain
쿠키의 유효범위를 정의하는 path와 domain 옵션이 있다.
var http = require('http');
var cookie = require('cookie');
http.createServer(function(request, response){
console.log(request.headers.cookie);
var cookies = {};
if(request.headers.cookie !== undefined){
cookies = cookie.parse(request.headers.cookie);
}
console.log(cookies.yummy_cookie);
response.writeHead(200, {
'Set-Cookie':[
'yummy_cookie=choco',
'tasty_cookie=strawberry',
`Permanent=cookies; Max-Age=${60*60*24*30}`,
'Secure=Secure; Secure',
'HttpOnly=HttpOnly; HttpOnly',
'Path=Path; Path=/cookie',
'Doamin=Domain; Domain=test.o2.org'
]
});
response.end('Cookie!!');
}).listen(5000);
- 쿠키 값 뒤에 Path=/cookie을 붙여주면 /cookie 경로 및 /cookie의 하위 경로에서만 쿠키 값이 살아있다는 의미로 받아드릴 수 있다.
- 쿠키 값 뒤에 Domain=test.o2.org을 붙여주면 o2.org가 붙은 어떠한 하위 경로에서도 쿠키 값은 살아있다고 볼 수 있다.
/cookie 경로에서만 설정한 Path 쿠키값이 등장한다.
/cookie의 하위 경로에도 Path의 쿠키값이 존재하고 있다.
반응형
'프로그래밍 개발 > Express' 카테고리의 다른 글
Express - express-session의 기본 개념 (0) | 2021.01.16 |
---|---|
Express - 쿠키를 이용한 인증 기능 구현하기 (0) | 2021.01.15 |
Express - 쿠키의 기본 개념 (0) | 2021.01.15 |
Express - 라우터의 파일로 분리 정리 (0) | 2021.01.14 |
Express - 에러처리 (0) | 2021.01.14 |
댓글