쿠키와 세션

ClassBinu·2024년 4월 4일

Node.js 교과서

목록 보기
8/19

쿠키

서버는 요청에 대한 응답을 보낼 때 쿠키를 보냄.
쿠키는 그냥 key=value

클라이언트는 이 쿠키를 웹 브라우저에 저장했다가, 다음 요청때는 쿠키를 동봉해서 보냄.

이렇게 자동 전송되는 쿠키를 서버가 받아서 누구인지 식별하는 것!

서버는 쿠키를 헤더에 담아서 전송함.
브라우저는 응답 헤더의 Set-Cookie에 따라 쿠키 저장함.

세션

세션: 서버 기반의 상태 정보 유지 기술

쿠키에 직접 값을 넣어 통신하면 탈취 가능성이 있음.
그래서 임의의 문자열을 통신하고,
서버에서 이를 관리하는데 이걸 세션이라고 한다.

서버와 클라이언트는 세션 아이디로만 소통하고,
세션을 위해 사용하는 쿠키를 세션 쿠키라고 함.

일반적으로 세션을 서버의 메모리에 저장하지 않고, 레디스, 멤캐시드 같은 인메모리 DB를 활용.
왜냐면 서버가 재실행되면 메모리가 초기화되니까.

세션 테이블 예시

쿠키가 탈취되면?

XSS

웹 애플리케이션의 보안 취약점을 이용하여 공격자가 사용자의 브라우저 상에서 악의적인 스크립트를 실행하게 만드는 공격 방법

Stored XSS 예시:

공격자가 온라인 포럼의 댓글 입력란에 와 같은 스크립트를 입력합니다. 웹 사이트가 이 입력을 필터링 없이 저장하고, 다른 사용자가 해당 댓글이 포함된 페이지를 방문할 때 이 스크립트가 실행되어, 경고창이 표시됩니다. 실제 공격에서는 세션 쿠키를 탈취하는 스크립트가 사용될 수 있습니다.

Reflected XSS 예시:

검색 기능이 있는 웹 사이트에서, 사용자가 검색어를 입력하고 제출하면 그 검색어가 검색 결과 페이지에 그대로 반영되는 경우가 있습니다. 만약 공격자가 검색어 입력란에 를 입력하고, 이 URL을 피해자에게 전송하여 클릭하게 만든다면, 피해자의 브라우저에서 공격자의 스크립트가 실행됩니다.

DOM-based XSS 예시:

웹 페이지의 URL에 포함된 파라미터가 JavaScript를 통해 무분별하게 DOM에 추가되는 경우, 예를 들어 URL이 http://example.com/#와 같이 조작되어, 해당 스크립트가 웹 페이지 로딩 시 실행되도록 만들 수 있습니다.

0개의 댓글