반응형
250x250
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Notice
Recent Posts
Today
Total
관리 메뉴

네이처리 노트

[Node.js] 쿠키와 세션 | NPM express-session과 session-file-store 본문

개발기록/Node.js

[Node.js] 쿠키와 세션 | NPM express-session과 session-file-store

네이처리 2022. 10. 1. 22:06
728x90
반응형

 

공부하면서 정리한 내용입니다

참고한 내용은 링크를 확인해주세요


 

 

 

보안 및 세션 

쿠키(Cookie)란, 클라이언트 측(브라우저)에서 관리되는작은 기록 정보 파일을 의미합니다.

쿠키에는 사용자 인증이 유효한 시간을 명시할 수 있으며,한 번 유효 시간이 정해지면 브라우저를 끄더라도 인증이 유지된다는 특징이 있습니다.  쿠키는 클라이언트인 Local 에서 저장되기 때문에, 누구나 쿠키의 값을 확인할 수 있어값을 위변조하기 쉽다는 단점이 있습니다. 그러나 세션(Session)은 쿠키와 다르게 서버에 저장되기 때문에,서버에 데이터를 저장하고 Web Broswer는 세션의 ID만 가지고 있습니다.

세션의 ID는 sid 라고 하는 식별자 입니다.

 

🔗 Hash md5 암호화하기

🔗 hash된 암호에 salt 치기

🔗 쿠키와 세션 비교

 

 

 

 

 

 

 

📦 Express-session

이 패키지는 저장소를 따로 가지지 않아서 이것만으로는 세션이라는 기능을 제공할 수 없다.

express-session의 공식 사이트에는 함께 사용할 수 있는 패키지들을 안내하고 있다.

 

🔗 세션 적용 예제

🔗 저장소의 물리적위치

🔗 저장소 종류 ⭐저장소 종류로 mysql,file, memory가 있는데 memory는 권장하지 않음

🔗 mysql 저장소 사용예제 및 keyboard cat 🐈

 

📦 session-file-store

이 모듈은 package.json 위치에 sessions폴더를 자동으로 생성하고 쿠키(정보가 담긴 파일)를 생성 및 삭제한다.

ES6버전 import사용한 예제

🔗stackoverflow

import express, { json, urlencoded } from "express";
import session from "express-session";
import session_store from "session-file-store";

const exp = express();

let random_key = "keyboardCat";
let FileStore = session_store(session);
let fileStoreOption = { reapInterval: 86400 }; // expired session (seconds)
let cookieOption = {		 // 디폴트값 존재함
    path : "/cookieShop/",	 // 세션폴더를 생성하고 쿠키저장할 경로를 지정할수있다.
    maxAge: 604800000		 // 쿠키만료일 ( ms )
    secure: false,       	 // use https
}

exp.use(cookieParser(random_key));
exp.use(session(
    {
        name                : "sessionID",  // this session id, used clear cookie from logout
        secret              : random_key,   // 암호화할 랜덤 값
        proxy               : true,
        resave              : false,    
        saveUninitialized   : true,        // 세션 자동생성 여부, 디폴트true 전체페이지에서 쿠키생성
        store               : new FileStore(fileStoreOption),  //옵션없어도 디폴트있음
        cookie              : cookieOption,
    }
));

saveUninitialized가 false고 수동으로 생성하는 경우 

// save.js

request.session.user_nick = ${nick};
request.session.in_time = Date.now();
request.session.save((err)=>{
        if (err) throw err;
        response.json();
});
// destroy.js

response.clearCookie("keyboardCat");
request.session.destroy((err)=>{
    if (err) throw err;
    response.json();
});

 

 

Error

브라우저 application에 cookie적용이 안된다. 알고보니 세션이 매번 새로생성된다.

🔗 다른도메인간 쿠키전송하기

🔗 stackoverflow

 

 

 

 

 

 


728x90
반응형
Comments