Spring 숙련 1주차 (5)

신성훈·2024년 6월 12일

TIL

목록 보기
36/162
post-thumbnail

오늘의 학습 키워드

  • 필터
  • Spring Securrity
  • Validation

필터

  • Filter란?

    -Web 애플리케이션에서 관리되는 영역으로 Client로 부터 오는 요청과 응답에 대해 최초/최종 단계의 위치이며 이를 통해 요청과 응답의 정보를 변경하거나 부가적인 기능을 추가할 수 있다.

    -범용적으로 처리해야 하는 작업들, 예를들어 로깅 및 보안 처리에 활용

    • 인증, 인가 로직을 처리 할 수 있다.
    • 인증, 인가와 관련된 로직을 비즈니스 로직과 분리하여 관리할 수 있다는 장점이 있다.

  • Filter Chain

    -Filter는 한 개만 존재하는 것이 아니라 이렇게 여러 개가 Chain 형식으로 묶여서 처리될 수 있다.
    -@Order(1) 로 필터의 순서를 지정합니다.
    -chain.doFilter(request, response); 다음 Filter로 이동시킵니다.

Spring Securrity

  • Spring 서버에 필요한 인증 및 인가를 위해 많은 기능을 제공해 줌. 마치 'Spring' 프레임워크가 웹 서버 구현에 편의를 제공해 주는 것과 같다.

  • 'Spring Security' 프레임워크 추가

    // Security
    implementation 'org.springframework.boot:spring-boot-starter-security'

    -@EnableWebSecurity // Spring Security 지원을 가능하게 한다.

  • CSRF
    -사이트 간 요청 위조
    -공격자가 인증된 브라우저에 저장된 쿠키의 세션 정보를 활용하여 웹 서버에 사용자가 의도하지 않은 요청을 전달
    -CSRF 설정이 되어있는 경우 html 에서 CSRF 토큰 값을 넘겨주어야 요청을 수신
    -쿠키 기반의 취약점을 이용한 공격 이기 때문에 REST 방식의 API 에서는 disable 가능
    -POST 요청마다 처리해 주는 대신 CSRF protection 을 disable
    ->http.csrf((csrf) -> csrf.disable());

Validation

  • null 값에 대한 접근에 대해 NullPointerException 오류가 발행하기 때문에 이러한 부분을 예방하기 위해 Validation 즉, 검증 과정이 필요하다.

  • Spring에서는 null 확인 뿐 아니라 문자의 길이 측정과 같은 다른 검증 과정도 쉽게 처리할 수 있도록 Bean Validation 제공하고 있다.

  • Bean Validation
    @NotNull null 불가
    @NotEmpty null, “” 불가
    @NotBlank null, “”. “ “ 불가
    @Size 문자 길이 측정
    @Max 최대값
    @Min 최소값
    @Positive 양수
    @Negative 음수
    @Email E-mail 형식
    @Pattern 정규 표현식

  • Validation 예외처리
    -회원가입 진행 시 데이터 검증 시 오류가 발생했을 때 로그인 페이지가 아니라 회원가입 페이지로 이동 하려면 Validation 예외를 처리해야한다.

    -BindingResult
    ->예외가 발생하면 BindingResult 객체에 오류에 대한 정보가 담는다.
    bindingResult.getFieldErrors()
    ->발생한 오류들에 대한 정보가 담긴 List<FieldError> 리스트를 가져온다.

profile
조급해하지 말고, 흐름을 만들고, 기록하면서 쌓아가자.

0개의 댓글