[ TIL ] 20240126

선호·2024년 1월 26일
0

공부 시간

TODO

  • Spring
    - [x] dispatcher servlet 이해
    - [x] spring security 복습
    - [x] 회원가입에 대한 고찰

복기

웹 서버와 웹 애플리케이션의 동작 과정

웹 서버는 클라이언트로부터의 HTTP 요청을 받아들여 정적인 콘텐츠를 제공하고, 동적인 요청은 웹 애플리케이션 서버(WAS)로 전달하는 역할을 수행합니다.

웹 서버의 역할

  1. 정적인 콘텐츠(완성된 HTML 등)를 브라우저로 전달합니다.
  2. 동적인 요청이 들어왔을 때, 해당 요청을 WAS에 전달합니다.

요청 처리 순서

  1. 클라이언트로부터 HTTP 요청 송신
  2. 웹 서버가 요청을 받고 웹 애플리케이션 서버(WAS)로 전달
  3. WAS에서 서블릿 컨테이너로 이동
  4. 서블릿 컨테이너 초기화
    • HttpServletRequestHttpServletResponse 인스턴스 생성
  5. 서블릿 컨테이너 내에서 서블릿이 요청을 처리
    • 각 요청마다 쓰레드를 생성하여 처리
    • HttpServletRequest에 요청 정보가 담겨 처리됨
  6. Spring Boot의 Dispatcher Servlet 동작
    • 중앙 집중식으로 요청을 처리
  7. Handler Mapping 및 Handler Adapter 동작
    • 요청에 맞는 핸들러(컨트롤러)를 찾고 연결
  8. 로직 실행 및 응답 생성
    • 핸들러가 실제 로직을 실행하고 응답 생성
  9. 응답을 Dispatcher Servlet으로 전달
  10. 웹 서버를 통해 클라이언트로 처리된 응답 송신

CSRF

Cross site Request forgery로 사이즈간 위조 요청인데, 즉 정상적인 사용자가 의도치 않은 위조요청을 보내는 것을 의미한다.

예를 들어 A라는 도메인에서, 인증된 사용자 H가 위조된 request를 포함한 link, email을 사용하였을 경우(클릭, 또는 사이트 방문만으로도), A 도메인에서는 이 사용자가 일반 유저인지, 악용된 공격인지 구분할 수가 없다.

CSRF protection은 spring security에서 default로 설정된다. 즉, protection을 통해 GET요청을 제외한 상태를 변화시킬 수 있는 POST, PUT, DELETE 요청으로부터 보호한다.

csrf protection을 적용하였을 때, html에서 다음과 같은 csrf 토큰이 포함되어야 요청을 받아들이게 됨으로써, 위조 요청을 방지하게 됩니다.

profile
개발을 하더라도 탄탄하게

0개의 댓글