안녕하세요.
|
개발자 김환희입니다.

thumbnail
커스텀 어노테이션으로 회원가입 유효성 검사하기

@Valid 자바에서 사용되는 어노테이션 중 하나로, HTTP 요청 데이터를 객체로 반환할 때 유효성 검사를 수행하는 어노테이션이다. LocalValidatorFactoryBean 스프링에서 제공하는 Validator 인터페이스의 구현체 중 하나이다. 스프링 어플리케이션 컨텍스트 내에서 사용되며 @Valid 어노테이션을 통한 데이터 유효성 검사를 처리한다. 스프링에서는 validation 의존성만 추가해주면 자동으로 빈 등록이 되어 사용할 수 있다. 사용법 유효성을 검증할 데이터를 받아올 DTO를 생성하고, 각 필드에 검증하고 싶은 유효성 어노테이션을 붙여준다. 해당 DTO에 @Valid 어노테이션을 붙이면 유효성 검증을 할 수 있다. 검증 실패 검증에 실패할 경우 MethodArgumentNotValidException 예외를 던지게 된다. 커스텀 어노테이션 회원가입 데이터의 조건 사용자 이름 : 최소 4자 이상, 10자 이하이며 알파벳 소문자, 숫자로 구성되어야 한다. 비밀번호…

November 13, 2023
자바
Spring Security

WebSecurityConfig CSRF(Cross Site Request Forgery)란? 웹 취약점 공격 방법중 하나로 사용자가 자신의 의지와 무관하게 공격자가 의도한 행위를 특정 웹사이트에 요청하게 하는 공격 Spring Security에서는 CSRF 예방기능을 제공하는데 DISABLE 하는 이유 Cross Site Request Forgery (CSRF) :: Spring Security 공식 페이지에 나와있듯, CSRF 설정은 브라우저에서 처리할 수 있는 모든 요청에 대해서 사용하는 것이 좋다. CSRF를 사용하지 않도록 사용하는 경우는 브라우저 이외의 클라이언트에서만 사용하는 서비스(REST API)를 생성할 경우이다. REST API는 서버에 인증정보를 보관하지 않기 때문에 CSRF 공격에 크게 영향을 받지 않는다. authorizeRequests() : 특정 경로에 대한 접근 권한을 지정하는 메소드 requestMatchers(PathRequest.toStaticR…

November 10, 2023
보안
Filter와 Interceptor

필터와 인터셉터 모두 웹 애플리케이션에서 요청을 가로채어 중간에서 작업을 처리하는 구성요소이다. 공통점 필터 체인, 인터셉터 스택을 통해서 요청과 응답에 대한 여러 작업을 순차적으로 처리할 수 있다. 두 기능 모두 웹 애플리케이션의 핵심 로직과 분리되어 작업을 수행하고, 작업을 공통적으로 처리하여 코드의 중복을 줄일 수 있는 장점이 있다. 이 둘은 어떻게 동작하며, 차이점은 무엇이 있을까? 각 기능에 대해서 알아보자! Filter 필터는 J2EE 표준 스펙 기능으로 DispatcherServlet에 요청이 전달되기 전/후에 부가 작업을 처리할 수 있는 기능을 제공한다. 스프링이 아닌 톰캣과 같은 웹 컨테이너에 의해 관리가 되지만, 스프링 빈으로 등록은 가능하다. 메소드 Filter 인터페이스는 3가지 메소드를 가지고 있다. init 메소드 필터 객체를 초기화하고 서비스에 추가하기 위한 메소드 웹 컨테이너가 init 메소드를 호출하여 필터 객체를 초기화 하면 이후 요청들은 doFi…

November 09, 2023
Spring
인증과 인가

인증과 인가 인증(Authentication) 사용자의 신원을 검증하는 행위, 보안 프로세스에서 첫 번째 단계 인가(Authorization, 권한부여) 사용자에게 권한을 허용/거부하는 행위 우리가 사용하는 HTTP의 특성 비연결성 : 리소스 절약을 위해 서버는 하나의 요청에 대해서 응답을 주고 연결을 끊어버린다. 무상태 : 서버는 클라이언트가 이전에 어떤 상태였는지 알지 못한다. 🤔 그럼 연결이 되어있지 않고 상태도 안가지고 있는데 어떻게 인증과 인가를 진행하는걸까? 쿠키-세션 방식 사용자의 인증 정보가 서버의 세션 저장소에 저장되는 방식이다. 사용자가 로그인에 성공하면 서버는 사용자의 인증 정보를 세션 저장소에 저장하고, 사용자의 정보와는 관계없는 SESSION ID를 생성하여 클라이언트에게 응답값으로 전달한다. 클라이언트는 SESSION ID를 쿠키에 저장하고 앞으로의 요청마다 SESSION ID를 함께 보낸다. 서버는 요청값에 있는 SESSION ID에 해당하는 세션 정보가…

November 08, 2023
보안