개발스토리

쿠키, 세션 본문

node.js

쿠키, 세션

무루뭉 2020. 12. 10. 00:57

쿠키와 세션 이해하기

  • 클라이언트에서 보내는 요청에는 한 가지 큰 단점이 있다. 바로 누가 요청을 보내는 지 모른다는 것이다.
  • 그래서 많은 웹 사이트들은 로그인 기능을 포함한다.
    • 로그인을 구현하려면 쿠키와 세션에 대해 알고 있어야 한다.
    • 로그인을 한 후에 새로고침을 해도 로그아웃이 되지 않는다. 그것은 바로 클라이언트가 서버에 우리가 누군 지 지속적으로 알려주고 있기 때문이다.
    • 우리가 누군지 기억하기 위해 서버는 요청에 대한 응답을 할 때 쿠키라는 것을 같이 보낸다.
      • 쿠키는 유효 기간이 있으며 키-값의 쌍이다.
      • 서버로 부터 쿠키가 오면 웹 브라우저는 쿠키를 저장해두었다가 요청할 때마다 동봉해서 보낸다.
      • 서버는 요청에 들어있는 쿠키를 읽어서 사용자가 누구인지 파악한다.
      • 쿠키는 요청의 헤더에 담겨 전송된다.

즉, 서버는 미리 클라이언트에 요청자를 추정할 만한 정보를 쿠키로 만들어 보내고, 그 다음부터는 클라이언트로부터 쿠키를 받아 요청자를 파악한다. 쿠키가 우리가 누구인지 추적하고 있는 것이다. 개인정보 유출 방지를 위해 쿠키를 주기적으로 지우라고 권고하는 것이 이러한 이유 때문이다.

const http = require('http');

http.createServer((req,res)=>{
    console.log(req.url, req.headers.cookie);
    res.writeHead(200, {'Set-Cookie' : 'mycookie=test'});
    res.end('hello cookie');
}).listen(8080, ()=>{
    console.log('서버 대기중');
});
  • 위 코드는 서버에서 직접 쿠키를 만들어 요청자의 브라우저에 넣는 예제이다.
  • 아직까지는 생성한 쿠키가 '나'인지는 식별해주지 못하고 있다.

쿠키가 '나'임을 식별해도 Application 탭에서 쿠키가 노출되어 있다면 매우 위험하다.

  • 쿠키가 조작될 수도 있다.
  • 민감한 개인정보를 쿠키에 넣어두는 것은 적절하지 못하다.

세션 방식

  • 서버에 사용자 정보를 저장하고 클라이언트와는 세션 아이디로만 소통한다.
    • 세션 아이디는 쿠키를 통해 주고받을 수 있다. 이를 '세션 쿠키'라고 한다.
    • 실제 배포용 서버에서는 세션을 변수에 저장하지 않는다. 초기화되기 때문이다. 그래서 보통은 레디스나 맴캐시드 같은 디비에 넣어둔다.

'node.js' 카테고리의 다른 글

cluster  (0) 2020.12.10
https와 http2  (0) 2020.12.10
REST와 라우팅  (0) 2020.12.10
요청과 응답  (0) 2020.12.10
파일 시스템 접근하기  (0) 2020.12.05
Comments