더북(TheBook)

콘솔

$ node session
8085번 포트에서 서버 대기 중입니다!

▲ 그림 4-18 로그인 이후

이 방식이 세션입니다. 서버에 사용자 정보를 저장하고 클라이언트와는 세션 아이디로만 소통합니다. 세션 아이디는 꼭 쿠키를 사용해서 주고받지 않아도 됩니다. 하지만 많은 웹 사이트가 쿠키를 사용합니다. 쿠키를 사용하는 방법이 제일 간단하기 때문입니다. 이 책에서도 쿠키를 사용해 세션 아이디를 주고받는 식으로 실습을 진행할 것입니다. 세션을 위해 사용하는 쿠키를 세션 쿠키라고 합니다.

물론 실제 배포용 서버에서는 세션을 위와 같이 변수에 저장하지 않습니다. 서버가 멈추거나 재시작되면 메모리에 저장된 변수가 초기화되기 때문입니다. 또한, 서버의 메모리가 부족하면 세션을 저장하지 못하는 문제도 생깁니다. 그래서 보통은 레디스(Redis)나 멤캐시드(Memcached) 같은 데이터베이스에 넣어둡니다.

서비스를 새로 만들 때마다 쿠키와 세션을 직접 구현할 수는 없습니다. 게다가 지금 코드로는 쿠키를 악용한 여러 가지 위협을 방어하지도 못합니다. 위의 방식 역시 세션 아이디 값이 공개되어 있어 누출되면 다른 사람이 사용할 수 있습니다. 따라서 절대로 위의 코드를 실제 서비스에 사용해서는 안 됩니다. 위의 코드는 여러분에게 개념을 설명하기 위한 코드이며, 보안상 매우 취약합니다.

안전하게 사용하려면 다른 사람들이 만든 검증된 코드를 사용하는 것이 좋습니다. 다른 사람의 코드(모듈)를 사용하는 방법은 5장에서 배웁니다. 또 6장에서 세션을 처리하는 모듈을 사용해 제대로 된 세션 기능을 도입해보겠습니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.