TIL #10 - 쿠키와 세션 로그인처리, GitHub 복구하기, TIL 작성법
🧑💻 오늘 나는 무엇을 배웠는가?
- 쿠키와 세션을 이용한 로그인 처리
- GitHub 복구하기
우선, 쿠키와 세션이 생긴 배경에 대해 알아봅시다.
HTTP는 클라이언트 서버 구조로서 비연결성, 비상태성의 특징을 가지고 있습니다.
클라이언트가 서버와 요청을 주고 받고 나면 요청이 끊어지고, 클라이언트가 다시 요청을 하게 되면 서버는 이전 요청을 기억하지 못합니다.
이렇게되다보니 재요청임에도 불구하고 매번 새로운 사용자로 인식하게되는 문제점이 생겼습니다.
이를 보완하기위해 나온 것이 바로 쿠키와 세션입니다.
쿠키란 ❓
브라우저에서 서버로 요청을 보내고 이에 대한 응답을 쿠키로 받습니다.
브라우저는 응답 받은 쿠키를 PC의 쿠키저장소에 저장을 해두고 서버로 요청이 있을 때 마다 발급받은 쿠키 정보를 헤더에 담아 서버로 보내 사용자를 식별할 수 있게 합니다.
쿠키의 특징 ✔️
- 사용자 정보 클라이언트에 저장
- Key와 Value를 가진 String 형태, 크기 제한 4KB
- 만료시점은 쿠키 저장시에 설정한다. (따로 설정하지 않으면 브라우저 종료시에 삭제된다.)
- 서버에 재요청할 필요가 없기 때문에 속도가 빠르다.
- 보안 문제가 존재한다.
- 노출되어도 상관없는 정보들을 다룰 때 사용하면 편리하다.
- 한 번에 한 가지 정보만 전달할 수 있다.
⏰ 쿠키의 생명주기
- 세션 쿠키 : 만료 날짜를 생략하면 브라우저 종료시까지만 유지
- 영속 쿠키 : 만료 날짜를 입력하면 해당 날짜까지 유지
쿠키 문제점 ⛔
- 쿠키 값은 아무나 임의대로 변경 가능한 값이다. (악의적인 이용 가능)
- 민감한 중요한 정보들을 담기에는 위험하다.
- 웹 브라우저를 변경할 경우 동일한 쿠키 값을 사용할 수 없다.
세션이란❓
쿠키의 문제점들을 보완하기 위해 나온 것이 세션입니다.
쿠키는 사용자의 정보를 클라이언트에서 관리했지만, 세션은 서버에서 관리를 하죠.
서버는 예측할 수 없는 값(Session id)을 가진 토큰을 쿠키로 생성하여 클라이언트에게 전달해주고, 클라이언트는 받은 쿠키값을 요청마다 전송하여 서버가 유저를 식별할 수 있게 해줍니다.
이 토큰 값은 일정 시간이 지나면 삭제되고 악의적인 행위가 의심될 시 강제로 제거할 수 있으므로, 보안 면에서 쿠키보다 우위에 있습니다.
세션의 특징 ✔️
- 사용자 정보 서버에 저장. 보안에 좋다.
- 민감하고 중요한 정보들을 관리하는데 적합하다.
- Object형태, 용량 제한 없음.
- 만료시점은 웹 브라우저가 종료될 때. (정확한 시점은 알 수 없다)
- 한 번에 많은 정보를 전달할 수 있다.
세션 문제점 ⛔
- 쿠키보다 느리다.
- 서버 과부하 발생 가능
📜 정리
아무리 세션이 쿠키보다 보안 면에서 좋다 하더라도 남발할경우 서버에 과부화를 불러오게 됩니다.
따라서 정보의 중요도에 따라 쿠키를 사용할 것인지 세션을 사용할 것인지를 판단하여 적절하게 사용하는 방향이 가장 적절할 것 같습니다.
🤔 이런 고민과 문제점들이 있었어요
❓1️⃣ GitHub 복구하기
팀프로젝트를 진행하면서 branch를 새로 분기하여 작업물을 올릴려고 하는데 그 과정에서 pull을 잘못하여
로컬에 있는 파일들이 모두 초기 코드로 초기화되어버리는 참사가 일어나버렸습니다....
하필, 일요일부터 작성했던 코드들은 팀원과 branch 를 정하고 push를 하려는 마음에 기존 레포에 push를 안하고 있던터라 이틀동안 작성했던 코드가 그냥 삭.제.
물론 이전 코드들은 남겨져있었지만, 너무 아찔 했습니다.
그러던 와중 커밋 로그를 확인하여 이전으로 돌아갈 수 있다는 것을 알게 되었고 바로 시도해보았습니다.
❓2️⃣ TIL 작성법
재작년부터 꾸준히 해오던 1일 1알고리즘 풀이를 이번달 부터 중단하고 TIL 작성에 힘을 쏟기로 했어요.
계속해서 작성하다보니까 여러 고민들이 생기더라고요.
처음에 생각했던 것은 기술면접과 관련된 토픽을 하나 잡아서 매일 오전 9~12시 시간에 이 부분만 쫙 공부하고 정리하고 포스팅을 하는 식이였어요.
하지만, 2주정도 진행을 해보니 생각보다 3시간이라는 시간안에 그 모든 정보를 이해하고 정보를 전달하는 것이 짧다고 느껴졌어요. 모두가 보는 공간이다 보니 정보 글을 작성하는 부분에서 정확한 점들만 전달을 해야하기도 했고요.
오후 시간대에는 팀프로젝트 진행도 해야하고 저녁에는 스터디 준비도 해야해서 이 오전시간이 어쩌면 포스팅에 온전한 시간을 쏟을 수 있는 시간이라 고민이 되더라고요.
그리고 가장 큰 고민 점은 TIL은 하루에 배운 것을 모두 정리하는 의도로 하는 것인데, 저는 토픽 하나만을 다루고 있다는 점이죠. 그리고, 지금 이 글을 작성하는게 나를 위해서 쓰는건가? 남들에게 보여주려고 쓰는건가?
이 부분이 가장 큰 고민이 되더라고요. 어떠한 기술에 대해서 정리하고 그에 대한 정보를 올리는 글들은 많은 블로그들이 있는데, 다른 블로그들을 참조하고 정리하고 때로는 글을 붙여넣기 식으로 작성하는 이런 과정들이 나한테 정말 도움이 되는건가? 라는 고민이 생겼어요. 학습은 되지만, 제가 원하는 본래의 취지에서 어긋난 느낌이 들더라고요. 너무 또 블로그에 집중을 하게 되어서 이전처럼 놓치는 부분들이 생기는 실수를 할 거 같고요.
❓3️⃣ eslint 설치후 리액트 npm start 안되는 오류 발생
왤케 나를 힘들게 하니~~~~
개발은 산넘어 산이네요. 여태 팀원분과 git branch 맞추고 pr, merge 다 잘되는지 확인하고 개발하자이제!!! 했는데
갑자기 생각치도 못한 오류가 ..... 하
넌 대체 또 뭐냐?
구글링해도 별로 정보가 없는 에러다 하필...
🐳 이렇게 해결할 거에요.
✔️1️⃣ GitHub 복구하기
이렇게 터미널에서 git reflog 명령어를 치면 그 동안 커밋했던 로그가 쫙 뜹니다.
그 중 제가 복구하고 싶은 부분의 헤드를 찾아서 기억한 다음
git reset --hard HEAD@{숫자} 를 작성하면!!!!!
복구가 완료됩니다 ㅎㅎ.... 진짜 아찔 했네요.
여태 개발하면서 이랬던적이 없었는데 이번 경험으로 약처방 받았다 생각해야겠습니다 🤣
✔️2️⃣ TIL 작성법
오늘부터 TIL 작성 방식을 바꿔봤어요.
개인적인 공부로 기술면접과 관련된 토픽들을 정리하되 포스팅에서는 너무 깊게는 다루지 않기로 하였고 제가 정말 이해하고 중요하다고 생각되는 점들, 하루동안 있었던 고민, 했던 공부들을 모~두 정리하기로 하였어요.
오늘부터 바꿔서 시작이라 며칠간 이리저리 적용도 해보고 시행착오를 겪을거 같은데, 나중되면 알고리즘 풀이를 하던 것처럼 나름의 체계가 잡힐 것 같아요.
제가 생각하는 TIL의 가장 중요한 목적은 다음과 같아요.
1. 오늘 공부한 것을 되새기고 정리 (추후에 다시 봐서 학습에 도움이 될 수 있게)
2. 어떠한 고민들을 가졌고 해결하려고 하였는지 일기식으로 정리
3. 그래서 오늘은 어떤 성취를 가졌는지
매일매일 모든 것을 다 채울 수는 없겠지만, 계속해서 무언가를 학습해나아가고 성취를 해나아가는 과정들을 담는 것이 저의 성장에 도움이 될 것이라는 확신을 가지고 임해야겠습니다.
✔️3️⃣ eslint 설치후 리액트 npm start 안되는 오류 발생
index.html을 재설정해주니 해당오류는 사라졌다. 하지만, 아직 npm start를 해서 화면을 띄우면 빈화면만 나온다.
내일은 이 오류를 해결해봐야겠다.
👑 오늘의 성취
오늘은 팀원과 branch 분기하고 PR날리고 Merge 하는 과정을 다 거쳐봤습니다.
여러 테스트를 해보면서 서로 궁금했던 점들을 해소하고 새로 배우는 것들도 있어서 되게 흥미로운 시간들이였습니다. 재밌더라고요 🤣
근데, 지금 생각치 못한 오류가 발생해서 내일 스터디 끝나고 바로 또 오류 해결에 매진해야겠습니다.
오롯이 개발에만 집중하고 싶은데 개발 초기라 그런지 설정하고 맞춰봐야할게 넘 많네요
TIL도 이렇게 작성하는 식으로 하려고요. 되게 좋은거 같아요. 계속 하루하루 있었던 것들 수정하면서 추가하기도 좋아요.
'성장기록 > TIL' 카테고리의 다른 글
TIL #12 - props, props drilling 해결법, redux를 사용하는 이유 (0) | 2023.01.26 |
---|---|
TIL #11 - 제네릭, 리액트 빈화면 에러 해결, git PR merge Conflict, 라이브러리와 프레임워크의 차이 (0) | 2023.01.18 |
TIL #9 - git branch 전략 (0) | 2023.01.16 |
TIL #8 - 로컬 스토리지 객체 값 사용하기 (0) | 2023.01.13 |
TIL #7 - SPA와 MPA (0) | 2023.01.10 |