[Node.js] 쿠키 옵션
2023. 7. 7. 03:07ㆍ공부 중/Node.js
0. 참고자료
1. Secure & HttpOnly
쿠키를 훔쳐가는 행위를 막기 위한 방법.
가. Secure
Secure는 웹브라우저와 웹서버가 https로 통신하는 경우만 웹브라우저가 쿠키를 서버로 전송하는 옵션.
안전한 상황에서만 쿠키를 전송한다.
response.writeHead(200, {
'Set-Cookie':[
`cookie=secureCookie; Secure`
]
});
나. HttpOnly
HttpOnly는 자바스크립트의 document.cookie
를 이용해서 쿠키에 접속하는 것을 막는 옵션.
자바스크립트로 장난질하지 못하도록 사전에 차단하는 것이다.
response.writeHead(200, {
'Set-Cookie':[
`cookie=httpOnlyCookie; HttpOnly`
]
});
웹 브라우저의 개발자 도구를 활용해서 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);
localhost:3000
→undefined
localhost:3000/cookie
→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);
domain
옵션을 사용하면 서브 도메인에서도 쿠키에 접근할 수 있다.
site.com
에서 쿠키를 설정할 때 domain
옵션에 루트 도메인domain=site.com
을 명시적으로 설정해 주면 서브 도메인 sub.site.com
에서도 쿠키에 접근할 수 있게 된다.
'공부 중 > Node.js' 카테고리의 다른 글
[Node.js] 쿠키의 한계 (0) | 2023.08.10 |
---|---|
[Express] 쿠키로 다크모드 구현 (1) | 2023.08.08 |
[Node.js] 세션 쿠키, 영구 쿠키 (0) | 2023.07.06 |
[Node.js] 쿠키 생성, 읽기 (0) | 2023.07.06 |
[Express] 보안 (0) | 2023.07.05 |