Notice
Recent Posts
Recent Comments
Link
개발스토리
쿠키, 세션 본문
쿠키와 세션 이해하기
- 클라이언트에서 보내는 요청에는 한 가지 큰 단점이 있다. 바로 누가 요청을 보내는 지 모른다는 것이다.
- 그래서 많은 웹 사이트들은 로그인 기능을 포함한다.
- 로그인을 구현하려면 쿠키와 세션에 대해 알고 있어야 한다.
- 로그인을 한 후에 새로고침을 해도 로그아웃이 되지 않는다. 그것은 바로 클라이언트가 서버에 우리가 누군 지 지속적으로 알려주고 있기 때문이다.
- 우리가 누군지 기억하기 위해 서버는 요청에 대한 응답을 할 때 쿠키라는 것을 같이 보낸다.
- 쿠키는 유효 기간이 있으며 키-값의 쌍이다.
- 서버로 부터 쿠키가 오면 웹 브라우저는 쿠키를 저장해두었다가 요청할 때마다 동봉해서 보낸다.
- 서버는 요청에 들어있는 쿠키를 읽어서 사용자가 누구인지 파악한다.
- 쿠키는 요청의 헤더에 담겨 전송된다.
즉, 서버는 미리 클라이언트에 요청자를 추정할 만한 정보를 쿠키로 만들어 보내고, 그 다음부터는 클라이언트로부터 쿠키를 받아 요청자를 파악한다. 쿠키가 우리가 누구인지 추적하고 있는 것이다. 개인정보 유출 방지를 위해 쿠키를 주기적으로 지우라고 권고하는 것이 이러한 이유 때문이다.
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