-
(17) HTTP - 인증 & 쿠키HTTP 웹/Http 웹 기본 2021. 7. 6. 22:23
1. 인증 헤더
1-1) 정의
Authorization: 헤더를 이용하여 클라이언트 인증 정보를 서버에 전달하는 기능
WWW-Authenticae: 헤더를 이용하여 리소스 접근시 필요한 인증 방법을 정의1-2) 방식
- 클라이언트 인증 정보를 서버에 전달
> Authorization:
- ex) Authorization: Basic xxxxxxxxxxxxx
- Basic 이외 수많은 방식들이 있음 OAUTH1, 2 등등...
- 헤더에 정보가 들어가는 것이 핵심(어떤 방식으로든 이 헤더는 인증과정에서 포함됨)
+ 헤더의 value는 바뀔수 있음 - 인증 방식을 클라이언트에 서버가 전달
> WWW-Authenticate:
- 리소스 접근시 필요한 인증 방법 정의
- 401 Unauthorized 응답과 함께 사용
(어떤 방식으로 인증을 해야하는지 알려주는 것)
- ex)
2. 쿠키
참조 : https://korshika.tistory.com/51
2-1) 정의 & 종류
- Set-Cookie : 서버에서 클라이언트로 쿠키 전달(응답)
- Cookie : 클라이언트가 서버에서 받은 쿠키를 저장하고 쿠키가 필요한 HTTP 요청시 서버로 전달
2-2) 쿠키 사용의 이유
(a) 첫 welcome page 접근
(b) 로그인
(c-1) 쿠키 미사용시
> 문제 발생 이유
- HTTP는 stateless 프로토콜임
- 클라이언트와 서버가 요청과 응답을 주고 받으면 그후 연결이 끊어짐
- 클라이언트가 재요청시 서버는 이전 요청을 기억하지 못한다
- 클라이언트와 서버는 서로 상태를 유지하지 않음
> 대안
모든 요청과 링크에 사용자 정보 포함
→ 개발도 힘들고, 브라우저를 완전히 종료 후 다시 열면 지속할 수 없으며, 보안성이 없음
> 대안 2
쿠키 사용
(c-2) 쿠키 사용
- 로그인시 클라이언트가 정보를 입력하면
> 서버는 쿠키 정보를 말아서 클라이언트에 응답을 함
- ex) sessionID(아이디), expire(만료기간), path(허용 URI), Secure(쿠키 보안정보)
> 브라우저가 받은 쿠키 정보를 '쿠키 저장소'에 저장
- 웹브라우저가 자동으로 어떤 요청을 서버에 보내던지 쿠키를 함께 보냄
> 사용처
- 사용자 로그인 세션 관리
※ 첫 로그인 set cookie 헤더 보낼 때
Session key를 서버에 저장하고, 클라이언트에 그 키 값을 set cookie 값으로 보냄
> 쿠키 정보는 항상 서버에 전송됨
- 네트워크 추가 트래픽을 유발
→ 세션id 사용하여 서버에서 자원소모 줄일 수 있음
→ 최소한의 정보만 사용(세션 id), OAUTH 사용시(인증 토큰)
- 서버에 전송하지 않고, 웹브라우저 내부에 세션 데이터 저장하고 계속 사용하고 싶으면
웹-스토리지 참고(localStorage, sessionStorage) 참고
> 주의
- 보안에 민감한 데이터는 저장하면 안됨(주민번호, 신용카드 번호 등등)
여기서 부터는 모두 클라이언트 요청에 Cookie: 헤더에 포함되는 내용
Set-Cookie에 의해 발급되고 난 이후
2-3) 쿠키 - 생명주기
- 영속쿠키(만료날짜 지정)
Set-Cookie: expires=Sat, 26-Dec-2020 04:39:21 GMT
- 날짜는GMT 사용할 것 - 세션쿠키(만료날짜 미지정)
만료날짜를 생략하면 브라우저 종료시 까지만 유지 - Duration 지정
Set-Cookie: max-age=3600 (3600초)
- 0이나 음수 지정하면 쿠키 바로 삭제
2-4) 쿠키 - 도메인
1차 필터 도메인 기준 필터 담당
(a) 필요 이유
도메인을 명시해야 해당 도메인에 접속시 쿠키를 발급해줄 수 있으므로
(b-1) 명시
명시한 문서 기준 도메인 + 서브 도메인 까지 포함
ex) domain=example.org
- example.org 가능
- dev.example.org 도 쿠키 접근 가능(b-2) 비명시
ex) domain=example.org
- example.org 가능
- dev.example.org 는 쿠키 접근 불가2-5) 쿠키 - 경로
Path 명시
(a) 필요 이유
도메인을 명시한 후, 해당 도메인에서 path로 들어갈 때 쿠키 접근 허용
이 경로를 포함한 하위 경로에만 쿠키 접근 가능(b) Syntax
path=/ <루트 명시>
(c) 예시
※ path=/home으로 지정한 경우
- /home : 가능
- /home/level1 : 가능
- /home/level1/level2 : 가능
- /hello : 불가능
2-6) 쿠키 - 보안
Secure, HttpOnly, SameSite
- Secure
- 쿠키는 http, https를 구분하지 않고 전송됨
- Secure를 적용하면, https인 경우만 전송 - HttpOnly
- XSS공격 방지
- JavaScript에서 쿠키를 access할 수 없음(document.cookie)
- HTTP 전송에만 사용 - SameSite
- XSRF 공격 방지
- 요청 도메인과 쿠키에 설정된 도메인이 같은 경우만 쿠키 전송
(다른 사이트에서 작성된 쿠키 적용 불가능)
참조
섹션 : HTTP 헤더1 - 일반 헤더
https://www.inflearn.com/course/http-%EC%9B%B9-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC/dashboard
반응형'HTTP 웹 > Http 웹 기본' 카테고리의 다른 글
(16) HTTP - 일반 정보 & 특별한 정보 (0) 2021.07.05 (15) HTTP - 전송 방식 (0) 2021.07.05 (14) HTTP - 콘텐츠 네고시에이션 (0) 2021.07.03 (14) HTTP - 표현 (0) 2021.07.02 (13) HTTP - 헤더 개요 (0) 2021.07.02 - 클라이언트 인증 정보를 서버에 전달