본문 바로가기
개발/차근차근 개발일지 TIL

TIL 230420

by 코딩하는짱구 2023. 4. 21.
반응형

TIL 230420

✅오늘 학습 Keyword

 쿠키, 세션, JWT

✅오늘 겪은 문제

심화과정에 들어야할 강의를 먼저 들었다..

하지만 소켓이란 개념을 미리 알게되서 52려 이득!

나중에 다시 만나자..!

 

소켓? 네트워크에서 데이터를 송수신하기 위한 연결부
ex)TCP: 안정적 , UDP: 손실가능성있지만 빠른전송 속도 

패킷? 콘센트 배선에 흐르는 전기와 비슷
소켓을 통해 송수신하는 덩어리 하나가 한개의 패킷

웹소켓? 실시간 웹서비스를 제공하기 위해 만들어진 소켓
ex) 새로고침하지 않아도 메시지 송수신, 예약 등 실시간으로 볼 수 있는 
ex) 구글 sheet 

socket.io? 자바스크립트로 웹소켓을 사용할때 가장 많이 사용되는 library
웹소켓이 지원되지 않는 브라우저인 경우 실시간 기능을 구현하게 해줌
즉 구현해놓은 'library'라 웹소켓이랑은 다르다!

실시간 구매 알림 구현 
1. socket.io로 클라이언트와 서버가 소켓 연결 
2. 클라이언트에서 사용자가 구매버튼을 누른 경우 서버로 '구매했어요'와 같은 데이터를 보내줘야만 접속중인 사용자들에게 알릴 수 있따. 
3. 다른 사용자가 구매를 한 경우 서버에서 모든 클라이언트에게 
"누군가가 구매를 했어요!"와 같은 데이터를 보내줘야 실시간 구매알림을 띄울수있음.

브라우저->클라이언트->ㅅㅓ버->접속중인 클라이언트들에게 알림 

 

✅오늘 학습 내용 정리

-지난주차 핵심 개념정리 

Q.Node.js는 프로그래밍 언어다?
노드 js는 js를 브라우저 없이 단독으로 실행할 수 있는 플랫폼이다
Q.NPM은 Node.js와 같은 프로그램이다?
npm은 노드에서 오픈소스 라이브러리를 쉽게 사용하기 위해 개발된 패키지 관리자 이다 
Q.express는 서버라고 불러도된다? 
express는 오픈소스 라이브러리다. 

 

-이번주차 핵심 개념 정리


HTTP ; 데이터를 주고받을 때 사용되는 통신 규약(모두의 약소쿠)
쿠키; 서버에서 쿠키를 노릇노릇 구워서 RESPONSE에 담아 보내면 웹 브라우저는 받은 데이터를 그대로 저장한다. 
브라우저가 쿠키를 가지고 있다면 REQ할때 항상 가지고 있는 쿠키 데이터를 포함해서 보낸다. 
암호화가 없기에 클라이언트에서 마음대로 조작하기 쉬워 보안에 취약함
세션; 쿠키를 기반으로 구성된 기술

 

cookieParser 는 쿠키를 req.cookies로 만들어 주기만 하는 것이 아니라 쿠키를
더욱 손쉽게 사용할 수 있도록 해주는 라이브러리. 
cookies를 배열화 시켜준다

cookieparser를 사용하지 않았을때 문자열로 뜸
cookieparser를 사용하면 쿠키가 객체형식으로 바뀐다

 

 

JWT란? 개미 머리header: 어떤 암호화를 사용했는지, 가슴payload:배열 형식의 데이터저장 , 배signature: 토큰이 정상인지 확인하는 부분 세 부분으로 이뤄짐
JWT엔 민감한정보는 담으면 안됌
쿠키, 세션 = 데이터를 교환하고 관리하는 방식
JWT = 단순히 데이터를 표현하는 형식
JWT 왜쓰는데? JWT는 누구든지 내부에 들어있는 정보를 확인할 수 있고, 위변조 여부를 확인할 수 있는 특징을 가지고 있다. 

JWT사용법!

//jwt 생성
const token = jwt.sign(payloadData, 'mysecretKey');
console.log(token);

//jwt 복호화
const decodedValue = jwt.decode(token);
console.log('복호화한 token 입니다.', decodedValue);

//jwt를 만들었을때, 사용한 비밀키가 일치하는지 검증
const decodedValueByVerify = jwt.verify(token, 'mysecretKey');
console.log('decodedValueByVerify:', decodedValueByVerify);

//jwt를 만들었을때, 사용한 비밀키가 일치하는지 검증 하지만 에러 발생
const decodedValueByVerifyToError = jwt.verify(
  token,
  '비밀키를 다르게 입력해봄.'
);
console.log('decodedValueByVerifyToError:', decodedValueByVerifyToError);

 

JWT로 암호화된 데이터를 쓰는 방식

반응형

'개발 > 차근차근 개발일지 TIL' 카테고리의 다른 글

TIL 230421  (0) 2023.04.21
쇼핑몰//회원가입-로그인 api 구현 참고용 총정리  (0) 2023.04.21
TIL 230419_Node.js 입문3  (0) 2023.04.19
WIL & TIL 230414_Node.js 입문2  (0) 2023.04.18
TIL 230414_Node.js 입문1  (1) 2023.04.14