17강 / 20강

세션 — 로그인한 다음을 지킨다

쿠키 플래그 · CSRF · 그리고 '권한은 서버에서'

세션 — 로그인한 다음을 지킨다
로그인은 순간이지만, 로그인 상태는 계속됩니다. 그 상태를 지키는 것이 세션 보안입니다.

손님이 로그인하면 서버는 세션을 만들고, 그 증표를 쿠키로 브라우저에 줍니다. 이후 요청마다 브라우저가 이 쿠키를 자동으로 보내서 "나 아까 그 사람"임을 증명해요.

문제는 이 쿠키가 비밀번호나 마찬가지라는 것입니다. 훔치면 그 사람이 되니까요. 이번 강의는 세션을 노리는 공격들과, 쿠키에 거는 플래그들을 봅니다.

쿠키에 거는 세 가지 플래그

세션 쿠키를 지키는 첫걸음은 플래그를 제대로 거는 것입니다. 공짜인데 안 거는 경우가 많아요.

HttpOnly
자바스크립트가 쿠키를 못 읽음 → XSS(15강)가 나도 세션은 버팀
Secure
https 로만 쿠키 전송 → 도청(8강)으로 못 훔침
SameSite
남의 사이트에서 온 요청엔 쿠키를 안 붙임 → CSRF 완화
세션 실습실 — 쿠키 플래그·CSRF·권한 검사를 켜고 끄며 공격을 재현
불러오는 중…

CSRF — 손님도 모르게 그의 이름으로

CSRF(사이트 간 요청 위조)는 교묘합니다. 손님이 우리 쇼핑몰에 로그인한 채로 공격자의 페이지를 열면, 그 페이지에 숨은 form 이 우리 사이트로 요청을 보냅니다. 브라우저는 쿠키를 자동으로 붙이니, 서버 입장에선 손님이 직접 한 요청처럼 보여요.

막는 법 둘 —

  • CSRF 토큰 — 우리 화면에서 시작된 요청에만 있는 비밀 증표를 확인
  • SameSite 쿠키 — 남의 사이트에서 온 요청엔 쿠키를 아예 안 붙임
403 이어야 정상. 200 이면 UI 로만 숨긴 것입니다.
🥷 공격자 브라우저 안에서 실행 (계산용)
🤔 확인 문제
세션 쿠키에 HttpOnly 플래그를 걸면 막을 수 있는 것은?
🤔 확인 문제
관리자 메뉴 버튼을 화면에서 숨겼습니다. 이것으로 충분한가요?