이번에 학습한 두 개의 강의는 모두 '인증'에 관한 것이었다. 첫 번째 강의는 Node.js 환경에서 쿠키(Cookie)를 활용해 로그인 기능을 구현하는 내용이었고, 두 번째 강의는 Node.js의 Express 프레임워크 환경에서 세션(Session)을 활용해 로그인 기능을 구현하는 내용이었다. 두 강의 모두 이전 강의와 마찬가지로 구름IDE 환경에서 학습했다.
쿠키(Cookie)란 클라이언트의 로컬에 저장되는 작은 데이터 파일이다. 대표적으로 Name-Value 값으로 구성되며, 이 외에도 웹브라우저 상에서의 쿠키 조작을 방지하기 위한 'HttpOnly', 각각 활성화 될 디렉토리와 도메인을 지정하는 'Path', 'Domain', Https 환경에서만 전송하는 'Secure', 만료 시기를 지정하는 'Expires' 값을 지정할 수 있다. 실제 웹 사이트에서는 로그인 유지, 야간 모드, 언어 설정, 쇼핑몰의 장바구니 등의 기능을 구현하기 위해 사용된다. 강의를 통해 쿠키의 여러 설정값을 사용하는 방법을 익혔고, 'Set-Cookie' 속성을 활용해 ID, 비밀번호, 닉네임의 정보를 가지는 쿠키를 발행해보기도 했다.
이처럼 생성된 쿠키는 브라우저의 개발자 도구를 통해 직접 확인할 수 있다. 로그인 기능 뿐만 아니라, 언어 설정, 야간 모드 등의 기능을 제공하는 웹 사이트에서도 개발자 도구를 통한 쿠키 조작을 통해 웹사이트를 변형할 수 있다. 쿠키는 사용자의 정보를 저장하여 편리성을 제공하지만, 그 정보가 그대로 노출되어 타인에 의해 조작될 수 있다는 치명적인 위험성을 가지고 있다.
쿠키의 보안적 위험성을 보완하기 위해 사용하는 것이 바로 세션(Session)이다. 세션은 쿠키에 기반한 기술이지만, 데이터를 클라이언트가 아닌 서버에 저장한다는 점에서 쿠키와 결정적으로 다르다. 웹 브라우저에서 쿠키를 통해 확인할 수 있는 유일한 정보는 클라이언트를 구분할 수 있는 세션 ID 뿐이다. 이처럼 세션은 사용자에 대한 정보가 직접적으로 노출되지 않아 보안성이 쿠키에 비해 뛰어나지만, 사용자가 많은 웹사이트의 경우 서버에 과부하가 걸릴 수 있다는 단점도 존재한다. 세션은 브라우저가 종료될 경우 만료되며, 주로 로그인 유지 기능을 위해 많은 웹사이트에서 사용되고 있다.
WEB3 - Node.js - Cookie & Auth를 학습하던 중 휴가를 갔다오고 2주간의 격리 기간이 있어 공부 공백이 길었다. 이 때문에 다시 학습을 시작했을 때 코드를 찬찬히 뜯어보며 기억을 떠올리는 데 시간이 조금 걸리기도 했다. 또, 구름IDE의 문제인지, 웹 서버를 실행하기 위해 사용했던 PM2의 문제인지 정확히 파악하지는 못했지만, 서버 실행에 딜레이가 생기고 자꾸 에러가 뜨는 등의 어려움도 있었다. 하지만 로그인 기능 구현이라는 주제가 매우 흥미로웠고, 덕분에 즐기면서 공부할 수 있었다. 전역이 다가오고 있는데, 계획했던 WEBn 시리즈 공부를 꽤 많이 진행해오고 있어 뿌듯하다. 남아있는 강의도 꾸준히 열심히 학습해 더 많은 기능을 배우고 프로그래머로서 더욱 더 성장하고 싶다.
강의명 : 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)을 참고했음을 밝힙니다.
'Dev' 카테고리의 다른 글
DATABASE2 - lowdb / WEB5 - Passport _ REWORK (0) | 2021.07.30 |
---|---|
WEB5 - Passport.js (0) | 2021.07.21 |
WEB3 - Express (0) | 2021.04.23 |
DATABASE2 - MySQL / Node.js & MySQL (0) | 2021.03.14 |
Study Plan / DATABASE1 (0) | 2021.01.31 |