일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
- 배열빈도수
- 리눅스계열
- 모래시계출력
- 배열복사
- 센토스
- wan
- 브로드캐스트
- ubuntu
- 도커
- 객체배열
- 디비버
- 백준
- 포트포워딩 안될때
- dbeaver
- 페이로드
- 배열최소값최대값
- Decapsulation
- filezilla
- EC2
- 오름차순
- 백준1946
- 포트포워딩
- 1946
- 다차원배열
- 우분투
- 도커권한설정
- docker
- 네트워크모델
- 유니캐스트
- 리눅스환경
- Today
- Total
다잘하고싶어
[Spring] 로그인구현4_세션 사용하는 이유 본문
세션 동작 방식 이해하기
사용자가 아이디, 비밀번호를 넣으면 서버로 데이터가 넘어온다.
서버는 회원저장소에서 데이터와 일치하는 정보가 있는 지 확인한다.
(모두 일치한다면)
서버에 세션 저장소를 만들고, 추정불가능한 랜덤값을 (보통 자바에서 지원하는 uuid를 사용) 생성해서 토큰키로 사용한다.(=세션아이디)
값은 회원객체를 저장한다. 즉 세션아이디를 알면 회원객체를 꺼낼 수 있음. (아래 예시표 참고)
sessionId | value |
zz011e8e29zi | memberA |
이후 서버에서 쿠키를 만들어서 웹브라우저에 보내준다(상태유지를 위해서)
쿠키를 보낼 때, 세션아이디를 넘겨준다.
웹브라우저에서는 쿠키저장소에 임의로 만든 랜덤값을 저장한다.
즉, 클라이언트와 서버는 결국 쿠키로 연결되어야 한다.
여기서 중요한 포인트? 회원과 관련된 정보는 클라이언트에 전달하지 않는다는 것!!
오직 추정 불가능한 세션 id만 쿠키를 통해 클라이언트에 전달한다. (사용자 추정불가)
이후 웹브라우저가 다른 페이지로 이동하면,
쿠키를 전달한다(mySessionId = zz...).
서버는 세션저장소를 확인해서 일치하는 정보가 있는 지 확인한다.
세션을 사용할 시 해결할 수 있는 보안 문제
1. 쿠키값 변조 문제 -> 예상 불가능한 복잡한 세션 id 사용한다
2. 쿠키에 저장된 정보는 클라이언트 해킹 시 노출되는 문제 -> 세션id가 털려도 여기에는 중요한 정보가 없다.
3. 쿠키 탈취 후 사용 문제 -> 토큰을 훔쳐가도 사용할 수 없도록 세션의 만료시간을 짧게 설정한다.
이제 세션을 직접 구현해보자
2022.10.07 - [SRPING] - [Spring] 로그인구현5_세션 직접 구현하고 적용하기
출처 : https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-mvc-2/dashboard
강의 듣고 내용 정리중
'이론학습 > SRPING' 카테고리의 다른 글
[Spring] 로그인구현6_서블릿HTTP 세션, 스프링이 제공하는 SessionAttribute (0) | 2022.10.08 |
---|---|
[Spring] 로그인구현5_세션 직접 구현하고 적용하기 (0) | 2022.10.07 |
[Spring] 로그인구현3_쿠키 활용 시 발생하는 문제 (1) | 2022.10.07 |
[Spring] 로그인구현2_쿠키 활용 (0) | 2022.10.07 |
더티체킹 Dirty Checking (0) | 2022.09.22 |