보안 - 쿠키 Cookie

jeong_hyeon·2022년 6월 10일

보안

목록 보기
4/5

클라이언트의 IP주소와 User-Agent는 매번 변경될수 있는 고유하지 않은 정보

HTTP 프로토콜은 Connectionless, Stateless 특성을 가진다.

💡 Connectionless 와 Stateless
Connectionless
- 하나의 요청에 하나의 응답을 한 후 연결을 종료하는 것을 의미
- 특정 요청에 대한 연결은 이후의 요청과 이어지지않고 새 요청이 있을때 마다 항상 새로운 연결을 맺는다.

Stateless 
- 통신이 끝난후 상태 정보를 저장하지 않는것을 의미
- 이전 연결에서 사용한 데이터를 다른 연결에서 요구할수 없다

Connectionless와 Stateless 특성을 가지는 HTTP에서 상태를 유지하기위해 쿠키(Cookie)가 탄생

쿠키(Cookie)

쿠키는 Key 와 Value 로 이루어진 일종의 단위

서버가 클라이언트에게 쿠키를 발급하면 클라이언트는 서버에 요청을 보낼때 마다 쿠키를 같이 전송

서버는 클라이언트의 요청에 포함된 쿠키를 확인해 클라이언트를 구분할수있다.

용도

일반적으로 쿠키는 클라이언트의 정보 기록과 상태 정보를 표현하는 용도로 사용

정보기록

웹 서비스 사용시 종종 등장하는 팝업창에 “다시 보지 않기”, “7일 간 표시하지 않기” 버튼이 있는 것을 확인할 수 있다.

웹서버는 각 클라이언트의 팝업 옵션을 기억하기 위해 쿠키에 해당 정보를 기록

쿠키를 통해 팝업창 표시 여부를 판단.

과거에는 클라이언트의 정보를 저장하기 위해 쿠키가 종종 사용되었지만

쿠키는 서버와 통신할 때마다 전송이 되기 때문에 쿠키가 필요없는 요청을 보낼때 리소스 낭비가 발생할수있다.

최근에는 이러한 단점을 보완하기 위해 Modern Storage ApIs를 통해 데이터를 저장하는 방식을 권장한다.

상태정보

많은 웹사이트 에서는 회원가입과 로그인을 통해 개개인에게 맞춤형 서비스를 제공

웹서버에서는 수많은 클라이언트의 로그인 상태와 이용자를 구별해야하는데 이때 클라이언트를 식별할수있는 값을 쿠키에 저장 해서 사용한다.

쿠키가 없는 통신

서버는 요청을 보낸 클라이언트가 누구인지 알수없기 때문에 현재 어떤 클라이언트와 통신 하는지 알 수없다.

쿠키가 있는통신

클라이언트는 서버에 요청을 보낼때 마다 쿠키를 포함하고 서버는 해당 쿠키를 통해 클라이언트를 식별

쿠키변조

쿠키는 클라이언트의 브라우저에 저장되고 요청에 포함되는 정보

즉 악의적인 클라이언트는 쿠키의 정보를 변조해서 서버에 요청을 보낼수있다.

만약 서버가 별다른 검증 없이 쿠키를 통해 이용자의 인증 정보를 식별한다면

공격자가 타 이용자를 사징해 정보를 탈취할수 있다.

0개의 댓글