[web] Cookie / Session
쿠키
Key와 Value로 이루어진 일종의 단위. 클라이언트의 정보 기록과 상태 정보를 표현하는 용도로 사용
정보기록 예: 다시보지 않기, 7일간 표시하지 않기 등
상태정보 예: 회원가입 후 로그인 시 사용자 기억
HTTP 프로토콜의 Connectionless와 Stateless 특징 때문에 웹서버는 클라이언트를 기억하지 못하는데, 상태를 유지하기 위해 쿠키(Cookie)가 사용됨. 클라이언트는 서버에 요청을 보낼때 쿠키를 함께 보냄
HTTP 프로토콜 특징
HTTP 프로토콜 특징
- Connectionless: 하나의 요청에 하나의 응답을 한 후 연결을 종료하는 것.
- Stateless: 통신이 끝난 후 상태 정보를 저장하지 않는 것.
쿠키 변조
쿠키는 클라이언트의 브라우저에 저장되고 요청에 포함되는 정보이기에, 쿠키 정보를 변조해 서버에 요청을 보내는 등 악용 가능
세션
쿠키에 인증상태를 저장하지만 클라이언트가 인증 정보를 변조할 수 없게 함.
인증정보를 서버에 저장하고 해당 데이터에 접근할 수 있는 Session ID(키, 유추할 수 없는 랜덤 문자열)를 만들어 클라이언트에 전달하는 방식.
세션 하이재킹(Session Hijacking) : 타 이용자의 쿠키를 훔쳐 인증정보를 획득하는 공격
퀴즈
퀴즈
1. 서버에 요청을 보내는 역할 : 클라이언트
클라이언트가 서버에 요청을 보내면 서버가 클라이언트에게 응답한다.
2. 통신이 끝난 후 상태정보를 저장하지 않는 특성 : Stateless
http 특성은 두가지로 한 요청에 한 응답만 하는 connectionlessdhk 통신 후 정보를 저장하지 않는 stateless가 있다
3. 세션이 인증 정보를 저장하는 곳: 서버
세션은 쿠키와 달리 인증정보를 서버에 저장한다
실습
실습

1. /admin 페이지에 접속하여 sessionid 획득
2. login 페이지에서 guest 계정으로 로그인
3. sessionid 값 변경 후 새로고침

1. 로그인 페이지에서 guest 계정으로 로그인
2. username을 admin으로 수정
SOP(Same Origin Policy, 동일 출처 정책)
이용자가 웹 서비스에 접속할 때, 브라우저는 해당 웹 서비스에서 사용하는 인증 정보인 쿠키를 http 요청에 포함시켜 전달한다. 악의적인 페인지가 클라이언트 권한을 이용해 http 요청을 보내고 응답정보를 획득할 수 있는데, 이를 읽을 수 없도록 하는 브라우저의 보안 매커니즘.
오리진(Origin)
프로토콜(Protocol, Scheme), 포트 (Port), 호스트(Host)로 구성되며, 구성요소가 모두 일치해야 동일한 오리진임.
CORS(Cross Origin Resource Sharing, 교차 출처 리소스 공유)
이미지나 자바스크립트, css 등의 리소스를 불러오는 태그는 SOP의 영향을 받지 않음.
웹 서비스에서 동일 출처 정책인 SOP를 완화하여 다른 출처의 데이터를 처리해야 하는 경우도 있음(이메일)
이와 같은 상황에서 자원을 공유하기 위해 사용할 수 있는 공유 방법.
JSON with Padding(JSONP) 방법을 통해 대체 가능
HTTP 헤더에 기반하여 Cross Origin 간에 리소스를 공유하는 방법.
발신측에서 헤더를 설정해 요청하면, 수신측에서 정해진 규칙에 맞게 데이터를 가져갈 수 있도록 설정.
CORSpreflight : 수신측에 웹 리소스를 요청해도 되는지 질의하는 과정
이러한 과정을 마치면 브라우저는 수신측 응답이 발신측 요청과 상응하는지 확인하고, post요청을 보내 수신측 웹 리소스를 요청하는 http 요청을 보냄.
JSONP(JSON with Padding)
이미지나 자바스크립트, css 등의 리소스를 불러오는 태그는 SOP의 영향을 받지 않는다는 특징을 이용.
<script> 태그와 Callback 함수를 이용해 Cross Origin의 데이터를 불러옴.
현재 거의 사용하지 않음.
퀴즈
퀴즈
1. SOP는 () 으로부터 온 데이터를 브라우저가 읽지 못하게 하는 정책 : cross origin
구성요소가 일치하는 오리진에서만 읽을 수 있다.
2. SOP의 동일 출처 기준을 판단하는 URI 요소 : schema, port, host
오리진 (프로토콜, 포트, 호스트) 기준으로 판단한다.
3. SOP 제한을 완화하여 다른 Origin의 웹 리소스를 가져오는 방식 : CORS
CORS는 다른 출처의 데이터를 처리하기 위한 공유 방법이다.
4. CORS 헤더 방식에서 HTTP 메소드 중 OPTIONS를 통해 수신측 웹 리소스의 접근 관련 질의를 하는 과정: CORS preflight
CORS에서는 웹 리소스를 요청해도 되는지 수신측에 질의하는 과정을 거친다.