Session-based Authentication
- Session: 서버가 클라이언트에 유일하고 암호화된 ID를 부여, 중요 데이터는 서버에서 관리
- 세션기반 인증(Session-based Authentication)
- Session 단점
- 서버에 부담 증가
- XSS 공격으로 세션 쿠키 탈취 시의 위험성
- 로그인
CSRF
- CrossSiteRequestForgery: 다른 오리진에서 유저가 보내는 요청을 조작하는 것
- CSRF 공격을 하기 위한 조건
- 쿠키를 사용한 로그인
- 유저가 로그인 했을 때, 쿠키로 어떤 유저인지 알 수 있어야 함
- 예측할 수 있는 요청/parameter를 가지고 있어야 함
- request에 해커가 모를 수 있는 정보가 담겨있으면 안됨
- GET 요청으로 CSRF 공격
- GET에 담기는 계좌 정보를 해커의 계좌로 변경하여 보냄
- POST 요청으로 CSRF 공격
- 비밀번호 변경은 내용이 body에 담겨 더 공격하기 어려움
- CSRF를 방어하는 방법
- CSRF 토큰 사용하기
- 서버측에서 CSRF 공격에 보호하기 위한 문자열을 유저의 브라우저와 웹 앱에만 제공
- Same-site cookie 사용하기: 같은 도메인에서만 세션/쿠키를 사용하게 제한
- same site와 same origin은 다소 차이가 있다
- a.codestates.com과 b.codestates.com은 same site지만, same origin은 아니다