세션이란?

김진경·2021년 12월 8일
0

세션이란

앞서 설명했던 쿠키는 웹 브라우저에 저장되는 '키-밸류' 타입의 데이터라고 언급했습니다. 따라서 누구나 키에 따른 밸류를 확인할 수 있으므로 비밀정보를 쿠키로 보낸다면 비밀 정보를 아주 쉽게 탈취당할 수 있습니다.

세션은 이러한 문제점을 고려해서, 쿠키를 업그레이드 한 것이라 보면 됩니다. 쿠키와 달리 서버에 데이터를 저장하고 웹 브라우저는 Session ID만을 가지고 있기 때문에 비교적 안전합니다.

세션의 동작을 요약하면 다음과 같습니다.

  1. 서버는 웹 브라우저에게 세션 값을 보내줍니다. (sid 라고 하며, 아무런 의미도 없는 단순 식별자입니다.)

  2. 클라이언트는 접속할 때 자신이 가지고 있는 sid를 서버에게 전달합니다.

  3. 서버는 클라이언트가 보내준 sid를 가지고, 해당 유저를 식별합니다.

var session = require('express-session');                      (1)
var MySQLStore = require('express-mysql-session')(session);    (2)
var options ={                                                 (3)
    host: 'localhost',
    port: 3306,
    user: '',
    password: '',
    database: ''
};
var sessionStore = new MySQLStore(options);                    (4)

app.use(session({                                              (5)
  secret:"asdfasffdas",
  resave:false,
  saveUninitialized:true,
  store: sessionStore                                          (6)
}))

(1) express-session 모듈을 로드합니다.

(2) express-mysql-session 모듈을 로드하되, 인자로 session을 넘겨줍니다.

(3) 데이터베이스에 접속하는 것이므로, host, port, user, password, database 정보를 객체로 저장해둡니다.

(4) 앞서 저장한 객체를 MySQLStore() 함수의 인자로 넘겨줍니다. 이 때 생성되는 객체를 sessionStore라는 변수에 저장합니다.

(4) session() 미들웨어를 설치합니다. secret은 keyboard cat으로 랜덤한 값을 입력해줍니다. secret 값은 공개되어서는 안됩니다. resave와 saveUninitialized는 세션을 다시 저장하냐, 초기화하냐 정도의 옵션인 것 같은데 저도 잘 모르겠습니다.. 보통 false와 true로 설정한다고 합니다.

(5) 저장소를 앞서 DB 연결로 생성된 sessionStore 객체로 지정합니다. (제가 지정한 DB에 session 테이블이 생성됨을 확인할 수 있습니다.)

출처.
https://m.blog.naver.com/pjok1122/221555161680

profile
Maktub.

0개의 댓글