세션과 쿠키의 정의: 관련 취약점
▷ 들어가며
웹서버는 어떻게 사용자의 연결 정보를 관리하는가?
HTTP 통신의 특징 = Stateless (상태 정보를 유지하지 않는다.)
→ 기억해야 할 임시정보를 저장하기 위해 세션과 쿠키를 사용한다.
1. 세션 (Session) / Server
: 사용자의 상태 정보를 서버에 저장하는 기술, 쿠키보다 비교적 보안이 좋고, 저장 데이터에 대한 제한이 없다.
- 세션 세부내용
: 각 세션별로 ID가 부여되고 사용되는 언어에 따라 이름이 다르다.
: 개발자가 설정한 위치에 저장되며, 미지정시 프레임워크 Default에 저장된다.
JESSIONID : | 100ackers354cxeu5s4bstplw |
[세션ID] JSP언어로 관리 (ASP, PHP, 직접설정) | [세션값] 세션의 고유 아이디 |
2. 쿠키(Cookie) / Client
: 사용자의 상태 정보(지역,시간, 언어, 모니터 화면 크기 등)를 사용자 측에 저장하는 기술. 도메인당 20개의 쿠키, 하나의 쿠키는 4KB까지 저장이 가능하다.
- 쿠키의 종류
Persistent Cookie : 만료일자 설정됨, 개발자 지정 혹은 로컬 Default경로에 저장
Session Cookie: 만료일자 미설정, 브라우저 메모리에 저장됨
- 세션/쿠키의 전달 과정
Set-Cookie: Session ID A
Cookie: 로그인 정보 + Session ID A
쿠키 목록 중 볼 수 있는 Session ID는 사용자 식별을 위한 쿠키값의 일종이다.
3. 관련 취약점
고정된 인증정보 이용
: 로그인 전 후 세션 값의 동일 여부 확인, 동일하면 보안에 취약한 상태임
: 즉, Client요청 시 전달하는 세션 값과 Server의 응답 세션 값이 일치하면 취약한 상태
불충분한 세션정보 처리
: 긴 세션 타임아웃은 탈취되어 악용될 수 있다.
: 세션 타임아웃을 기준치에 맞게 설정하여 계정을 자동으로 로그아웃 시킨다.
HTTP 쿠키 보안 설정
: 사용자 인증정보가 포함된 쿠키값은 XSS 등 공격으로 개인정보 피해가 발생할 수 있다.
: Document.cookie입력 시 노출 이 되는지 확인할 수 있다. Set Coookie에 보안 속성 세팅을 부가할 수 있다.
참고
https://dev-coco.tistory.com/61
https://elms.skinfosec.co.kr/index.asp