2023-07-12 TIL (Node.js 숙련 강의)

오준석·2023년 7월 12일
0

TIL (Today I Learned)

목록 보기
42/105
post-thumbnail

TIL

입문 주차 강의를 마무리하고, JWT와 미들웨어를 배우게 되는 숙련 주차 강의를 시작하였다. 아무래도 중요 개념이 많기에 집중해서 강의를 들어보고자 한다.


Include() 메서드는 문자열에 다른 문자열이 포함되어 있는지 여부를 확인
string.includes(searchString [,position])
ex) password.includes(nickname)

Git 이란?

  • Git 은 체계적인 개발과 프로그램의 배포를 도와주는 형상 관리 도구, 또는 버전 관리 시스템

💡 웹 서버는 절대로 웹 클라이언트에 먼저 요청할 수 없는건가?
맞음.

1) 서버는 어떤 클라이언트가 어떤 주소로 존재하는지 모르는게 일반적이기 때문에 서버에서 먼저 클라이언트와 연결하거나 요청 할 수 없다.
2) 만약 서버가 클라이언트에게 먼저 요청하게 된다면 서버가 클라이언트가 되고 클라이언트가 서버가 되는, 역할이 반전된 상황으로 봐야 한다.


🍪 쿠키란? 웹 브라우저에 구현된 기술 중 하나. 보통 상태를 저장하기 위해서 사용. (참고)

T.M.I)
서버에서 쿠키를 노릇노릇 구워서 Response에 담아 보내면 웹 브라우저는 받은 데이터를 그대로 저장한다.

브라우저는 가지고 있는 쿠키가 있다면 서버에 Request를 할 때 항상 가지고 있는 쿠키 데이터를 포함해서 보낸다.
단, 쿠키는 별도의 암호화 없이 데이터를 그대로 주고받기 때문에 클라이언트에서 마음대로 조작하기 쉬워 보안에 취약함.

세션(Session): 쿠키를 기반으로 구성된 기술. 단, 클라이언트가 마음대로 데이터를 확인 할 수 있던 쿠키와는 다르게 세션은 데이터를 서버에만 저장하기 때문에 보안이 좋으나, 반대로 사용자가 많은 경우 서버에 저장해야 할 데이터가 많아져서 서버 컴퓨터가 감당하지 못하는 문제가 생기기 쉬움


JWT가 무엇?

  • JSON 형태의 데이터를 안전하게 교환하여 사용할 수 있게 한다.
  • 인터넷 표준으로서 자리잡은 규격
  • 여러가지 암호화 알고리즘을 사용할 수 있다.
  • header.payload.signature 의 형식으로 3가지의 데이터를 포함 (개미처럼 머리, 가슴, 배)
    때문에 JWT 형식으로 변환 된 데이터는 항상 2개의 . 이 포함된 데이터여야 한다.

  • header(머리)는 signature(배)에서 어떤 암호화를 사용하여 생성된 데이터인지 표현

  • payload(가슴)는 개발자가 원하는 데이터를 저장

  • signature(배)는 이 토큰이 변조되지 않은 정상적인 토큰인지 확인할 수 있게 도와줌


빨간색 header, 파란색 payload, 초록색 signature

업로드중..
https://jwt.io/#debugger-io 참조

JWT를 왜 써야 하는건가?
1. JWT가 인증 서버에서 발급되었는지 위변조 여부를 확인
2. 누구든지 JWT 내부에 들어있는 정보를 확인 (복호화)

이 암호화 된 데이터는 어떻게 쓸 수 있나?

  • 보통 암호화 된 데이터는 클라이언트(브라우저)가 전달받아 다양한 수단(쿠키, 로컬스토리지 등)을 통해 저장하여 API 서버에 요청을 할 때 서버가 요구하는 HTTP 인증 양식에 맞게 보내주어 인증을 시도

  • 비유하자면, 놀이공원의 자유이용권과 비슷!

    • 회원가입: 회원권 구매

    • 로그인: 회원권으로 놀이공원 입장

    • 로그인 확인: 놀이기구 탑승 전마다 유효한 회원권인지 확인

    • 내 정보 조회: 내 회원권이 목에 잘 걸려 있는지 확인하고, 내 이름과 사진, 바코드 확인

      가즈아~

profile
개발자를 목표로 열심히 하려고 합니다.

0개의 댓글