[회고] 신입 iOS 개발자가 되기까지 feat. 카카오 자세히보기

🛠 기타/WEB

Node.js - cookie

inu 2021. 2. 2. 14:41
반응형

Cookie

  • 웹브라우저는 기본적으로 cookie(쿠키)라는 것을 지원한다.
  • 쿠키를 활용하면 서버로부터 받은 데이터 중 일부를 브라우저 자체적으로 저장해놓고 추후 활용할 수 있다. (접속 URL은 동일해야함)
  • 따라서 사용자가 브라우저를 사용하는 동안은 이러한 쿠키를 기반으로 정보가 저장 및 관리될 수 있다는 것이다.
  • 이러한 cookie를 관리하려면 node.js express에서는 별도의 패키지가 필요하다.

패키지 설치

$ npm install cookie-parser
  • cookie-parser는 이러한 브라우저의 쿠키데이터를 node.js가 확인하고 관리할 수 있도록 도와주는 패키지(미들웨어)이다.

사용예제

var express = require('express');
var cookieParser = require('cookie-parser');

var app = express();
app.use(cookieParser());

app.get('/', function (req, res) {
    if (req.cookies.count) {
          var count = req.cookies.count;
    } else {
        req.cookies.count = 0;
    }
    console.log('Cookies: ', req.cookies);
    res.cookie('count', count+1);
})
  • app.use(cookieParser())로 모든 쿠키값을 정상적으로 확인할 수 있도록 앞서 처리한다.
  • req.cookies로 현재 브라우저의 쿠키값들을 확인할 수 있다.
  • res.cookie로 현재 브라우저에게 특정 쿠키값을 전달할 수 있다.
  • 위 페이지는 쿠키값에서 count값을 받아 매번 1씩 더한다음 다시 브라우저의 쿠키를 설정하는 작업을 수행하고 있다.

Cookie & Security

  • 대부분의 쿠키는 외부에 노출되어선 안된다. 따라서 기본적인 암호화가 필요하다.
var express = require('express');
var cookieParser = require('cookie-parser');

var app = express();
app.use(cookieParser('SECURITY KEY'));

app.get('/', function (req, res) {
    if (req.signedCookies.count) {
          var count = req.signedCookies.count;
    } else {
        req.cookies.count = 0;
    }
    console.log('Cookies: ', req.signedCookies);
    res.cookie('count', count+1, {signed: true});
})
  • app.use(cookieParser('SECURITY KEY'))로 쿠키값을 암호화하여 관리할 수 있다.
  • 쿠키값들을 불러올 때도 req.signedCookies를 활용해야 불러올 수 있다.
  • 쿠키를 브라우저상에 새로 설정할때도 {signed: true} 옵션을 주어 암호화된 값을 넘겨주도록 한다.

cf. Session cookie vs Permanent cookie

  • Session cookie : 웹브라우저가 켜져있을 때만 유효 (재실행시 사라짐)
  • Permanent cookie : 웹브라우저를 재실행해도 유지됨
res.cookie('myCookie', 'set Cookie', {maxAge:3000}); // 초단위
  • 아무것도 설정하지 않으면 Session cookie가 되고, maxAge 혹은 expires로 만료기간을 설정하면 Permanent cookie가 된다.

그 외 다양한 쿠키의 옵션

  • Secure : https로 통신하는 경우만 웹브라우저가 쿠키를 전송하도록 한다.
  • HttpOnly: 자바스크립트에서 document.cookie로 쿠키값에 접근하지 못하게 막아준다.
  • Path: 설정한 경로 안에서만 쿠키가 활성화 됨
  • Domain: 서브 도메인을 쿠키저장 범위에 포함시킬 수 있음
반응형

'🛠 기타 > WEB' 카테고리의 다른 글

Node.js - Passport.js 기초  (0) 2021.02.03
Node.js - session  (0) 2021.02.02
Node.js - multer (파일 업로드)  (0) 2021.01.31
Node.js - Sequelize  (0) 2021.01.28
Nest.js - nest.js 환경에서 GraphQL 사용하기  (0) 2021.01.13