[Node.js] 쿠키 옵션

2023. 7. 7. 03:07공부 중/Node.js

0. 참고자료

 

 

쿠키 옵션 - Secure & HttpOnly - 생활코딩

수업소개 Secure는 웹브라우저와 웹서버가 https로 통신하는 경우만 웹브라우저가 쿠키를 서버로 전송하는 옵션입니다.  HttpOnly는 자바스크립트의 document.cookie를 이용해서 쿠키에 접속하는 것을

opentutorials.org

 

 

쿠키 옵션 - path & domain - 생활코딩

수업소개 쿠키의 유효범위를 정의하는 path와 domain 옵션을 살펴봅시다.  강의 소스코드 변경사항 nodejs/cookie.js var http = require('http'); var cookie = require('cookie'); http.createServer(function(request, response){ con

opentutorials.org

 

 

쿠키와 document.cookie

 

ko.javascript.info

 


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:3000undefined

아무런 쿠키가 보이지 않습니다.

 

  • localhost:3000/cookiePath

Path라는 쿠키가 보입니다.

 

나. domain

 

쿠키에 접근 가능한 domain(도메인)을 지정한다.

 

domain 옵션을 사용하지 않는다면…

  1. 쿠키를 설정한 도메인에서만 쿠키에 접근할 수 있다. (site.com에서 설정한 쿠키는 other.com에서 얻을 수 없음.)
  2. 서브 도메인(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