본문 바로가기

전체 글

(25)
[2023.11.26] Refresh Token & Access Token 글의 목적 Refresh Token & Access Token에 대해서 집중적으로 알아보고 보안문제들을 파악해보려고 함. 본론 Refresh Token & Access Token 두 토큰 모두 JWT 기반이다. Access Token은 API 요청을 할때 검증용 토큰으로 사용된다. 즉, 인증이 필요한 API를 사용할때는 꼭 Access Token을 Header에 넣어서 보내야 한다. 예) 유저 정보 수정 Refresh Token은 Access Token을 추가로 발급할때 사용된다. Access Token을 새로고침(Refresh)하는 기능이 있기 때문에 Refresh Token이라고 부른다. Access Token은 유효기간이 짧고 Refresh Token은 유효기간이 길다. 자주 노출되는 Access ..
[2023.11.26] session과 jwt token 집중 비교 글의 목적 session과 jwt token만을 비교하여 인증과 인가에 대해서 깊에 이해하기 위함. 본론 Session 이란? 유저의 정보를 데이터베이스에 저장하고 상태를 유지하는 도구 Session의 특징 Session은 특수한 ID 값으로 구성되어 있다. Session은 서버에서 생성되며 클라이언트에서 쿠키를 통해 저장된다. 클라이언트에서 요청을 보낼때 Session ID를 같이 보내면 현재 요청을 보내는 사용자가 누구인지 서버에서 알 수 있다. Session ID의 정보가 서버에 특정 데이터베이스의 정보와 연결이 되어있다는 의미 그래서 요청마다 매번 아이디와 비밀번호를 물어볼 필요 없음 (jwt도 같은 특징을 가짐) Session ID는 데이터베이스에 저장되기 때문에 요청이 있을때마다 매번 데이터베..
[2023.11.26] 내가 놓치고 있던 부분을 발견하여 정리3 (vscode 디버깅) 글의 목적 아직도 디버깅을 console로 하고 있어서 제대로된 디버깅을 해보려고 함. intellij나 webstorm은 훨씬 디버깅 툴이 좋고 깔끔한 것으로 알고 있지만 현재 vscode로 작업을 하고 있기 때문에 intellij나 webstorm 디버깅은 추후 소속된 곳에서 사용하는 툴에 따라서 비교를 해보려고 함. 본론 사진과 같이 순서대로 설명하기 때문에 누구나 따라할 수 있다고 생각함. 따라하기 어렵다면 댓글 부탁드립니다 :) 1. vscode 좌측에 run and debug 또는 실행 및 디버그라는 곳을 클릭 2. launch.json 파일 만들기를 클릭 3. 그럼 여러가지 서버에 맞는 디버거를 고르라는 창이 나오는데 현재 나는 node.js를 사용하고 있기 때문에 node.js로 골라줌. ..
[2023.11.24] 내가 놓치고 있던 부분을 발견하여 정리2 (PM2, NGINX, gzip) 글의 목적 프레임워크, 라이브러리, 도구, 함수 하나하나도 왜 선택해서 사용했는지 파악하기 위해 정리하려고 함. 쿠키, 세션, Token, JWT, PM2, NGINX, gzip, VPC를 부트캠프에서 배운대로 사용했는데 생각해보니까 왜 써야하는지에 대해서는 잘 알고 있지 못했음. 본론 PM2 pm2를 왜 쓸까? pm2에 대해서 공식문서를 확인해보면 "node.js를 위한 발전된 상품 프로세스 매니저"라고 나와있다. 즉, 필수품은 아니라는 말이다. 굳이 사용안해도 되는데 사용하는 이유는 편리하기 때문이다. 그럼 편리한 이유만 정리하면 될 것 같다. pm2가 편리한 이유 node 서버에 가장 큰 문제점은 역시 에러처리를 잘 못했을때 바로 꺼진다는 것이다. 그것을 막아준다. 즉 app이 꺼졌을때 자동으로 다..
[2023.11.24] 내가 놓치고 있던 부분을 발견하여 정리1 (cookie, session, JWT) 글의 목적 프레임워크, 라이브러리, 도구, 함수 하나하나도 왜 선택해서 사용했는지 파악하기 위해 정리하려고 함. 쿠키, 세션, Token, JWT, PM2, NGINX, gzip, VPC를 부트캠프에서 배운대로 사용했는데 생각해보니까 왜 써야하는지에 대해서는 잘 알고 있지 못했음. 본론 cookie 1. 쿠키가 왜 등장했고 필요한지? HTTP는 웹에서 이루어지는 모든 데이터를 주고받기 위한 서버-클라이언트 모델을 따르는 프로토콜임. HTTP는 connectionless와 stateless가 있는데 이 특징때문에 성능적인 측면에서는 매우 유용한 반면, 누가 보낸 요청인지를 기억하지 못함 이러한 단점을 해결하기 위해 웹 브라우저는 쿠키라는 것을 사용함. 사용자 컴퓨터에 저장됨. 2. 쿠키의 특징과 단점 브라..
[nang-man] 인프런 사이드 프로젝트 기록 1주차(23.11.20 ~ 23.11.26) 프로젝트 정보 기간 2023.11.20 ~ 인원 총 4명 , FE 2명, BE 2명 (BE로 참여) 나의 역할 1. 프로젝트 기획 참여 2. BE 프로젝트 초기 셋업 및 socket 연결 3. user api 구현 4. auth api 구현 2023.11.20 (월) 주말에 인프런에서 프로젝트 팀을 구하는 공고를 보고 바로 신청했고 참여하게 되었다. 월요일에 만나기로 해서 11.20일 월요일에 디스코드에서 만났다. 첫만남이라서 조금 떨렸는데 재밌게 회의를 진행한 것 같다. 전체적인 가이드, asana, figma로 해야할 것들과 하고 싶은것들을 대략적으로 이야기 하는 시간이었다. 중점적인 기능은 화상회의와 socket.io를 활용한 채팅이었고 이러한 기능을 디폴트로 두고 다른 여러 부가적인 기능을 추가하..
[2023.11.15] Redis 이해하기 글의 목적 Redis를 이해하기 직접 사용해본적은 없지만 앞으로 사용해야 할 스텍임이 분명함으로 미리 정리해두려고 함. 본론 Redis 캐시로 사용 What is Caching? Cache란 사용자의 입장에서 데이터의 원래 소스보다 더 빠르고 효율적으로 액세스할 수 있는 임시 데이터 저장소이다. 대부분의 애플리케이션에서 속도 향상을 위해 cache를 사용. cache가 유용하게 사용되려면? cache에 접근하는 게 원본에 접근하는 것보다는 쉽고 빨라야 함. 동일한 데이터에 대해 반복적으로 액세스하는 상황이 많을 때(데이터의 재사용 횟수가 한 번 이상) 잘 변하지 않는 데이터일수록 cache를 사용할 때 더 효율적 => 그런면에서 Redis는 이상적인 솔루션임. Redis가 이상적인 솔루션인 이유 단순하게..
[23.11.04~05] 주말동안 프로그래머스 MYSQL 코테 전 문제 풀고 난 후기 글의 목적 프로그래머스 MYSQL문제에 대한 느낌을 좀 정리해 두려고. 문제를 풀면서 공부해야할 키워드들을 정리해두고 하나씩 익숙하게 만들어갈 예정 본론 문제는 최대한 서브쿼리를 지양하고 INNER JOIN같은 경우는 WHERE 절로 INDEX들을 JOIN해서 풀었음. 총 76문제였는데 서브쿼리는 마지막에 4단계 5단계에서 서브쿼리를 쓸수밖에 없는 문제들이 있었음. 한 5문제 빼고는 다 JOIN으로 해결함. 너무 쉬운 키워드는 제외하고 기억해둘 만한 것들을 정리하려고 함. ORDER BY디폴트값 오름차순(ASC) 내림차순(DESC) CASE WHEN THEN ELSE END DATE_FORMAT("%Y-%m-%d") 프로그래머스는 이걸 정말 좋아한다........ JOIN(LEFT, RIGHT, SLEF..