오늘은 부트캠프 43일차이다. 오늘은 알고리즘 1문제와 스프링부트 CRUD 만드는 것부터 Security와 OAuth2까지 만드는 것까지 하였다. 강의내용과 약간 다른 것이 있었는데 예를들면, javax를 jakarta로 바꿔야 하는 것과 antMatch를 requestMatchers로 바꾸는 것이다. 이것은 그래도 구글링하면 다 나오는 것이다. 하지만 이게 중요한 게 아니라 어플리케이션을 실행시켰더니 잘 돌아간다. 하지만 카카오 로그인을 하면 index페이지로 넘어가야 하는데, 계속 카카오 로그인 페이지만 나와서 확인해보니 내가 오타를 내서 안되는 것이었다. 다음부터 코드 짤 때 잘보고 짜야겠다.
오늘 배운 것
1. HTTP의 특징
-HTTP 통신의 특징은 Connectionless와 Stateless라고 한다.
-HTTP프로토콜에서 상태를 유지하기 위해 쿠키와 세션이라는 방법이 있다.1-1. Connectionless(비 연결지향)
-클라이언트에서 서버에 요청을 보내면 서버는 클라이언트에 응답을 하고 접속을 끊는 특성이 있다.
1-2. Stateless(상태정보유지안함)
-HTTP 통신은 요청을 응답하고 접속을 끊기 때문에 클라이언트의 상태정보를 알 수 없다.
2. 쿠키
-클라이언트 로컬에 저장되는 Key-Value쌍의 작은 데이터 파일이다
-브라우저 개발자도구의 네트워크에서 쿠키값을 확인할 수 있지만, 가독성이 떨어지고 수정이 불가하다.
-쿠키는 클라이언트에서 수정할 수 있기 때문에 위변조의 위험이 항상 존재한다.
-쿠키값(value)를 암호화해야 더욱 안전하다.
-쿠키의 기한이 정해져 있지 않고 명시적으로 지우지 않는다면 반 영구적으로 쿠키가 남아있게 된다.2-1. 구성요소
-쿠키이름 / 쿠키값 / 만료시간 / 전송할 도메인명 / 전송할 경로 / 보안연결여부 / HttpOnly여부
3. 세션
-브라우저가 종료되기 전까지 클라이언트의 요청을 유지하게 해주는 기술이다.
-세션의 내용은 서버에 저장되기 때문에 계속하여 늘어날 경우 서버에 부하가 발생한다.4. 쿠키와 세션의 차이점
4-1. 저장위치
-쿠키는 로컬에, 세션은 로컬과 서버에 저장된다.
4-2. 보안
-쿠키는 탈취와 변조가 가능하지만, 세션은 ID값만 가지고 있고 서버에도 저장이 되어있기 때문에 상대적으로 안전하다.
4-3. Lifecycle
-쿠키는 브라우저를 종료해도 파일로 남아있지만, 세션은 브라우저 종료시 세션을 삭제한다.
4-4. 속도
-쿠키는 파일에서 읽기 때문에 상대적으로 빠르고, 세션은 요청마다 서버에서 처리를 해야하기 때문에 비교적 느리다.