0. 참고자료
1. Secure & HttpOnly
쿠키를 훔쳐가는 행위를 막기 위한 방법.
가. Secure
Secure는 웹브라우저와 웹서버가 https로 통신하는 경우만 웹브라우저가 쿠키를 서버로 전송하는 옵션.
안전한 상황에서만 쿠키를 전송한다.
response.writeHead(200, {
'Set-Cookie':[
`cookie=secureCookie; Secure`
]
});
Code language: JavaScript (javascript)
나. HttpOnly
HttpOnly는 자바스크립트의 document.cookie를 이용해서 쿠키에 접속하는 것을 막는 옵션.
자바스크립트로 장난질하지 못하도록 사전에 차단하는 것이다.
response.writeHead(200, {
'Set-Cookie':[
`cookie=httpOnlyCookie; HttpOnly`
]
});
Code language: JavaScript (javascript)
웹 브라우저의 개발자 도구를 활용해서 document.cookie를 실행해도 쿠키에 접근할 수 없다.
2. path & domain
쿠키의 유효범위를 정의하는 옵션.
가. path
특정 디렉터리(경로)에서만 쿠키가 활성화되게 한다.
이 경로나 이 경로의 하위 경로에 있는 페이지만 쿠키에 접근할 수 있다.
절대 경로이어야 하고, (미 지정 시) 기본값은 현재 경로다.
var http = require('http');
var cookie = require('cookie');
http.createServer(function(request, response){
var cookies = {};
if(request.headers.cookie !== undefined){
cookies = cookie.parse(request.headers.cookie);
}
console.log(cookies.Path);
response.writeHead(200, {
'Set-Cookie':[
'Path=Path; Path=/cookie'
]
});
response.end(request.url);
}).listen(3000);
Code language: JavaScript (javascript)
localhost:3000→undefined

아무런 쿠키가 보이지 않습니다.
localhost:3000/cookie→Path

Path라는 쿠키가 보입니다.
나. domain
쿠키에 접근 가능한 domain(도메인)을 지정한다.
domain 옵션을 사용하지 않는다면…
- 쿠키를 설정한 도메인에서만 쿠키에 접근할 수 있다. (
site.com에서 설정한 쿠키는other.com에서 얻을 수 없음.) - 서브 도메인(subdomain)인
sub.site.com에서도 쿠키 정보를 얻을 수 없다.
이런 제약사항은 안정성을 높이기 위해 만들어졌다.
민감한 데이터가 저장되는 쿠키의 특성상 최소한의 노출을 위해서 관련 페이지에서만 볼 수 있도록 했다.
var http = require('http');
var cookie = require('cookie');
http.createServer(function(request, response){
var cookies = {};
if(request.headers.cookie !== undefined){
cookies = cookie.parse(request.headers.cookie);
}
console.log(cookies.Domain);
response.writeHead(200, {
'Set-Cookie':[
'Doamin=Domain; Domain=.site.com' //혹은 site.com
]
});
response.end(request.url);
}).listen(3000);
Code language: JavaScript (javascript)
domain 옵션을 사용하면 서브 도메인에서도 쿠키에 접근할 수 있다.
site.com에서 쿠키를 설정할 때 domain 옵션에 루트 도메인domain=site.com을 명시적으로 설정해 주면 서브 도메인 sub.site.com에서도 쿠키에 접근할 수 있게 된다.

