본문 바로가기
프로그래밍 개발/Express

Express - express-session의 기본 개념

by Jinseok Kim 2021. 1. 16.
반응형

 

express-session

 

 

쿠키로만 로그인 기능을 구현하면 보안상 매우 치명적인 결함이 존재한다. 로그인을 할 수 있는 정보인 쿠키값이 그대로 노출되기 때문이다. 이때 express의 미들웨어인 session을 이용하면 이러한 문제점을 보안할 수 있다.

 

 

아래 사이트에서 세션에 대한 사용방법과 예가 나와있다.

http://expressjs.com/en/resources/middleware/session.html

 

Express session middleware

express-session Installation This is a Node.js module available through the npm registry. Installation is done using the npm install command: $ npm install express-session API var session = require('express-session') session(options) Create a session middl

expressjs.com

페이지에 들어가 보면 세션 스토어라는 여러가지 기능들을 나열해 놓은 것도 확인 할 수 있다.

 

 

예시 코드

express-session.js

var express = require('express')
var parseurl = require('parseurl')
var session = require('express-session') //세션 세팅 추가
var FileStore = require('session-file-store')(session) //세션 스토어 세팅 추가
 
var app = express()
 
 //아래 미들웨이가 세션을 적용한 코드이다.
app.use(session({
    secret: 'asadlfkj!@#!@#dfgasdg',
    resave: false,
    saveUninitialized: true,
    store:new FileStore() //파일 스토어라는 세션 스토어라는 기능을 이용하여 따로 세션 값들을 새로운 파일에 담았다.
}))
 
 
//세션의 프로퍼티 num 값을 1씩 증가하도록 간단한 테스트 코드를 만들어 놓았다.
app.get('/', function (req, res, next) {
//초기화면에 세션이 get의 두번째 인자인 콜백함수의 첫번째 인자의 프로퍼티로 들어가는 것을 알 수 있다.
    console.log(req.session);
    if(req.session.num === undefined){
        req.session.num = 1;
    } else {
        req.session.num =  req.session.num + 1;
    }
    res.send(`Views : ${req.session.num}`);
})
 
app.listen(3000, function () {
    console.log('3000!');
});

 

세션이 발동되자 자동으로 파일 스토어 기능이 발동되어 새로운 세션 파일이 따로 만들어졌다. 이로써 실제 로그인 기능에서 중요한 정보를 노출시키지 않고 이렇게 보안된 파일에 따로 쿠키값들을 저장할 수 있게 된 것이다.

 

 

 

 

새로고침을 할때마다 1씩 증가한다. 모두 세션이라는 기능을 통해 작동하고 있다.

반응형

댓글