
필터
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> 리스트를 가져온다.