HTTP란?
하이퍼미디어(HTML등) 문서를 전송하기위한 Application 프로토콜. (아래 레이어 참조)
- 비연결성 프로토콜 (Connectionless)
> 클라이언트 요청에 대해 서버가 응답을 마치면 connection을 끊어버림.
> 장점 : 다수의 클라와 연결 유지에 필요한 리소스 낭비 방지 > 서버가 더 많은 클라와 연결가능.
> 단점 : 매번 connection을 다시 맺어야해서 연결/해제에 대한 오버헤드 발생.
> 보완가능방법 : KeepAlive 속성을 이용해 헬스체크처럼 패킷을 보내 연결을 유지할 수 있음.
(속성사용 가능하지만 비표준 developer.mozilla.org/ko/docs/Web/HTTP/Headers/Keep-Alive)
- 무상태 프로토콜 (Stateless)
> 서버가 요청간에 어떠한 상태도 유지하지 않는다.
> 해당 client가 어떤 상태로 (이전에 인증을 받았었는지 등) 요청했는지는 서버가 모른다 (정보 가지고 있지 않음)
> 보완가능방법 : 쿠키/세션/토큰
- 클라이언트 - 서버 모델
> 요청 (크롬 등 브라우저) - 대답 (아파치 등 서버) 의 구조이다
> 다른 구조로는 각client가 client도 되고 server도 되는 peer-to-peer 가 있음.
- TCP/IP 레이어 사용
> TCP/IP를 사용하면 는 메시지를 잃지 않음 (UDP는 메시지 잃어버림)
참고
developer.mozilla.org/ko/docs/Web/HTTP
Stateless 보완방법 - 쿠키
- 사용자가 어떤 웹 사이트 방문시 Client에 기록을 남기는 방법
- 장점 : 서버에 저장 안해도되서 저장공간을 애낄 수 있다.
- 단점 : 공격자의 위변조가 쉽다.
- 털리면? 유저의 행동을 추척하거나 접근권한을 획득 할 수 있다.
- 쿠키의 사양은 최소기준은 있지만 브라우저마다 다르다. (크롬은 2MB이상인 경우 이슈가 있었다)
ko.wikipedia.org/wiki/HTTP_%EC%BF%A0%ED%82%A4
Stateless 보완방법 - 세션
- 사용자가 어떤 웹 사이트 방문시 사이트 Server 에 기록을 남기는 방법
- 장점 : 보안적으로 쿠키보다 안전하다 (but, 중간에 탈취 가능하므로 완벽하지는 않음.)
- 단점 : 저장공간도 필요하고 sessionID에 따른 매핑도 확인해야해서 과부화 생길 수 있음.
- 정보 내용자체는 서버에 저장하지만, sessionID (요청자 ID) 는 쿠키에 저장.
- 요청시마다 세션ID를 이용해 사용자 인식.
Stateless 보완방법 - 토큰 (JWT, OAuth)
- 저장하지 않고 암호화/치환 해서 들고 다니겠다.
- 장점 : 탈취당해도 key가 없으면 내용을 볼 수 없어 보안성에 좋음
- 단점 : 토큰을 복호화 해야하는 오버헤드 발생.
'Web' 카테고리의 다른 글
Schemeful Same-Site이슈 대응 및 옵션변경 (Chrome88 업데이트) (0) | 2021.02.21 |
---|---|
SameSite Cookie속성 변경? 정책 3가지/이유/대응 (Chrome80 업데이트) (1) | 2021.02.21 |
SameSite=none,secure 옵션으로 Cookie 생성하기 (SameSite Cookie 이슈 대응) - java (0) | 2021.02.12 |
댓글