Dev

WEB3 - Node.js - Cookie & Auth / WEB4 - Express - Session & Auth

HYOSITIVE 2021. 6. 3. 23:55

이번에 학습한 두 개의 강의는 모두 '인증'에 관한 것이었다. 첫 번째 강의는 Node.js 환경에서 쿠키(Cookie)를 활용해 로그인 기능을 구현하는 내용이었고, 두 번째 강의는 Node.js의 Express 프레임워크 환경에서 세션(Session)을 활용해 로그인 기능을 구현하는 내용이었다. 두 강의 모두 이전 강의와 마찬가지로 구름IDE 환경에서 학습했다.

 

쿠키(Cookie)란 클라이언트의 로컬에 저장되는 작은 데이터 파일이다. 대표적으로 Name-Value 값으로 구성되며, 이 외에도 웹브라우저 상에서의 쿠키 조작을 방지하기 위한 'HttpOnly', 각각 활성화 될 디렉토리와 도메인을 지정하는 'Path', 'Domain', Https 환경에서만 전송하는 'Secure', 만료 시기를 지정하는 'Expires' 값을 지정할 수 있다. 실제 웹 사이트에서는 로그인 유지, 야간 모드, 언어 설정, 쇼핑몰의 장바구니 등의 기능을 구현하기 위해 사용된다. 강의를 통해 쿠키의 여러 설정값을 사용하는 방법을 익혔고, 'Set-Cookie' 속성을 활용해 ID, 비밀번호, 닉네임의 정보를 가지는 쿠키를 발행해보기도 했다.

 

로그인 기능을 구현하는 코드. 사용자가 입력한 이메일과 비밀번호가 특정 정보와 일치하면 Response Header에 'Set-Cookie' 속성을 활용해 email, password, nickname의 쿠키를 생성한다.

 

이처럼 생성된 쿠키는 브라우저의 개발자 도구를 통해 직접 확인할 수 있다. 로그인 기능 뿐만 아니라, 언어 설정, 야간 모드 등의 기능을 제공하는 웹 사이트에서도 개발자 도구를 통한 쿠키 조작을 통해 웹사이트를 변형할 수 있다. 쿠키는 사용자의 정보를 저장하여 편리성을 제공하지만, 그 정보가 그대로 노출되어 타인에 의해 조작될 수 있다는 치명적인 위험성을 가지고 있다.

 

password, nickname, email 쿠키

 

쿠키의 보안적 위험성을 보완하기 위해 사용하는 것이 바로 세션(Session)이다. 세션은 쿠키에 기반한 기술이지만, 데이터를 클라이언트가 아닌 서버에 저장한다는 점에서 쿠키와 결정적으로 다르다. 웹 브라우저에서 쿠키를 통해 확인할 수 있는 유일한 정보는 클라이언트를 구분할 수 있는 세션 ID 뿐이다. 이처럼 세션은 사용자에 대한 정보가 직접적으로 노출되지 않아 보안성이 쿠키에 비해 뛰어나지만, 사용자가 많은 웹사이트의 경우 서버에 과부하가 걸릴 수 있다는 단점도 존재한다. 세션은 브라우저가 종료될 경우 만료되며, 주로 로그인 유지 기능을 위해 많은 웹사이트에서 사용되고 있다.

 

쿠키에서는 세션ID 값만을 확인할 수 있다.

 

서버의 session 폴더에 생성된 세션 파일에 사용자 정보가 저장되어 있다.

 

WEB3 - Node.js - Cookie & Auth를 학습하던 중 휴가를 갔다오고 2주간의 격리 기간이 있어 공부 공백이 길었다. 이 때문에 다시 학습을 시작했을 때 코드를 찬찬히 뜯어보며 기억을 떠올리는 데 시간이 조금 걸리기도 했다. 또, 구름IDE의 문제인지, 웹 서버를 실행하기 위해 사용했던 PM2의 문제인지 정확히 파악하지는 못했지만, 서버 실행에 딜레이가 생기고 자꾸 에러가 뜨는 등의 어려움도 있었다. 하지만 로그인 기능 구현이라는 주제가 매우 흥미로웠고, 덕분에 즐기면서 공부할 수 있었다. 전역이 다가오고 있는데, 계획했던 WEBn 시리즈 공부를 꽤 많이 진행해오고 있어 뿌듯하다. 남아있는 강의도 꾸준히 열심히 학습해 더 많은 기능을 배우고 프로그래머로서 더욱 더 성장하고 싶다.

 

 

HYOSITIVE/WEB3-Node.js-CookieAuth

WEB3 - Node.js - Cookie & Auth class from Opentutorials by Egoing - HYOSITIVE/WEB3-Node.js-CookieAuth

github.com

 

HYOSITIVE/WEB4-Express-SessionAuth

WEB4 - Express - Session & Auth class from Opentutorials by Egoing - HYOSITIVE/WEB4-Express-SessionAuth

github.com

 

강의명 : Opentutorials - WEB3 - Node.js - Cookie & Auth

학습 기간 : 2021.04.23 ~ 2021.05.24

 

강의명 : Opentutorials - WEB4 - Express - Session & Auth

학습 기간 : 2021.05.24 ~ 2021.06.02

 

* 쿠키와 세션의 개념 설명을 위해 '라이언곰돌이푸'님 블로그의 '쿠키와 세션 개념' 게시물(https://interconnection.tistory.com/74)을 참고했음을 밝힙니다.