ㆍ HTTP는 무상태성과 비연결성 특성을 가져 이전 상태의 정보를 유지하지 않음
ㆍ 실제로는 데이터 유지가 필요한 경우가 많기에 이를 해결하기 위해 다양한 기술을 사용함
ㆍ 브라우저 내부의 데이터 저장소
ㆍ 텍스트 파일에 데이터를 저장하여 정보를 유지함
ㆍ 데이터 저장소: 브라우저
ㆍ 데이터 저장 기간: 쿠키 유효 시간만큼
ㆍ 사용 예시: 팝업창 다시 보지 않기
ㆍ 단점
: 쿠키에 데이터가 직접 담겨져서 보안에 취약함
: 웹 브라우저마다 쿠키 지원 형태가 달라 브라우저 간 쿠키 공유 불가능
동작 방식
1) 클라이언트가 서버에 리소스 요청
2) 서버: 쿠키를 생성한 뒤 쿠키와 함께 리소스 응답
3) 클라이언트: 응답 받은 쿠키를 브라우저에 저장 & 브라우저 재방문 시 쿠키 함께 재전송
ㆍ 서버에 데이터를 저장하는 기술
ㆍ 쿠키에 세션 ID를 저장하여 정보를 유지함
ㆍ 쿠키 기반 기술이며, 서버는 저장된 세션 ID를 통해 클라이언트를 식별함
ㆍ 데이터 저장소: 서버
ㆍ 데이터 저장 기간: 브라우저 접속 ~ 종료할 때까지
ㆍ 사용 예시: 로그인 정보 유지
ㆍ 단점
: 서버에 세션 ID를 저장하기 때문에 클라이언트가 많을수록 서버 과부하 문제 발생
보안이 취약한 쿠키를 왜 사용할까?
ㆍ 세션만 사용할 경우 서버 메모리가 감당할 수 없기 때문에 쿠키와 세션을 함께 사용함
ㆍ 클라이언트에게 부여하는 난수 형태의 문자열
ㆍ 서버는 클라이언트의 토큰을 확인하여 인증과정을 거침
ㆍ 데이터 저장소: 브라우저
ㆍ 데이터 저장 기간: 토큰 유효 시간만큼
ㆍ 사용 예시: 로그인 정보 유지
ㆍ 단점
: 한 번 발행한 토큰은 유효기간이 끝나기 전까지 통제할 수 없음
: 토큰 정보를 탈취 당할 가능성이 있음
: 강제 로그아웃 기능을 사용할 수 없음
: 토큰 탈취 가능성이 있어서 중요한 정보를 저장하기 힘듦
: 토큰 자체 데이터가 길기 때문에 메모리 과부하 문제 발생 가능
ㆍ 웹에서 쓰이는 json 토큰
Access Token
ㆍ 클라이언트가 처음 인증을 받을 때 권한을 얻기 위해 사용되는 토큰
ㆍ 만료기간을 짧게 설정하여 토큰 보안을 높임
Refresh Token
ㆍ 재발급에 관여하는 토큰
ㆍ 보통 첫 로그인 때 Access, Refresh Token 모두 발급한 뒤, Access Token이 만료될 때마다 Refresh Token을 이용하여 토큰 재발급을 함
ㆍ 자주 사용하는 데이터를 미리 복사해 놓는 임시 장소
ㆍ 복사본을 저장함으로써 향후 요청을 더 빠르게 처리할 수 있음
ㆍ 서버 속도를 향상하기 위해 정적 콘텐츠(이미지, css, js, html, 변경되지 않은 데이터 등)를 임시 저장하는 기술
ㆍ 클라이언트는 서버에 매번 정적 데이터를 요청하지 않고, 웹 캐시에 저장된 데이터를 불러와 응답 시간을 줄임
ㆍ 클라이언트와 서버 사이에 위치하여 그들의 대리인처럼 동작하는 프로그램
ㆍ 클라이언트의 대리 역할이나 서버의 대리 역할을 함
ㆍ 보통 프록시 서버로 존재함
ㆍ 특징
1) 보안
: 클라이언트가 서버에 직접적으로 접근하는 것을 방지함
: Ex) 공공기관에서 특정 사이트에 접근할 수 없도록 막는 것
2) 캐싱
: 속도 개선
: 서버까지 가지 않고 프록시 서버에서 캐싱된 정보를 이용해 응답함
3) 로드 밸런싱
: 여러 대의 서버를 두고 요청을 분산하는 것
: 서버 부하를 낮춤
ㆍ 클라이언트 대신 서버에 요청을 전달하는 프록시
ㆍ 클라이언트는 프록시 서버만을 통해 정보를 얻음
ㆍ 프록시 서버가 대신 요청을 보내주기 때문에 서버는 클라이언트의 정보를 알 수 없음
ㆍ 클라이언트 가까이에 위치함
ㆍ 클라이언트에게 서버 대신 응답을 전달하는 프록시
ㆍ 클라이언트는 프록시에게 응답을 받기 때문에 서버 IP 주소가 노출되지 않음
ㆍ 서버 가까이에 위치함
참고
ㆍ https://interconnection.tistory.com/74
ㆍ https://inpa.tistory.com/entry/WEB-%F0%9F%93%9A-Access-Token-Refresh-Token-%EC%9B%90%EB%A6%AC-feat-JWT
ㆍ https://jeongkyun-it.tistory.com/173
ㆍ https://velog.io/@oyeon/Forward-Proxy-vs-Reverse-Proxy-vs-Load-Balancer
ㆍ https://velog.io/@dev_leewoooo/Forward-Proxy-Reverse-Proxy%EC%97%90-%EA%B4%80%ED%95%98%EC%97%AC