spring35 [Spring] Filter와 Interceptor Filter와 InterceptorFilter와 Interceptor에 대해서 좀 더 자세하게 알고 싶어서 정리하려고 합니다.🏷️ Filter 필터(Filter) 디스패처 서블릿에 요청이 전달되기 전/후에 어떠한 작업을 처리할 수 있는 기능을 제공합니다. 디스패처 서블릿은 스프링 컨텍스트의 영역이 아닌, WAS 같은 톰캣 영역에서 관리된다. 호출 순서는 다음과 같습니다. package jakarta.servlet;import java.io.IOException;public interface Filter { default void init(FilterConfig filterConfig) throws ServletException {} void doFilter(ServletRequest requ.. 2026. 1. 2. [Web / JWT / Spring] HttpOnly 쿠키와 보안 HttpOnly 쿠키와 보안JWT를 사용하면서 인증을 유지하는데 보안적인 문제로 Access Token과 Refresh Token을 같이 해야하는 상황이었습니다. AccessToken의 경우는 유효 시간이 짧기 때문에 Pinia라는 상태 관리 라이브러리로 관리 했지만 만료 후에 재발급 받을때 RefreshToken을 사용해야 했습니다. 하지만 이 Refresh Token을 Pinia로 저장하기엔 탈취 등 여러 보안적 위험이 많이 발생하기 때문에 이에대해 고민과 추가 적인 보안이 가능한지 찾아보게 되었습니다.✔️ 취약점1. 세션 하이재킹 (Session Hijacking)쿠키에 사용자의 로그인 상태를 증명하는 세션 ID가 담겨 있을 때 발생하는 가장 대표적인 공격입니다.설명: 공격자가 사용자의 쿠키를 탈취.. 2025. 12. 21. [Spring] STOMP + Spring Security에서 principal이 null 값 뜨는 경우 STOMP + Spring Security에서 principal이 null 값 뜨는 경우 프로젝트를 진행하면서 웹소켓을 사용하면서 겪었던 문제와 그 해결 과정을 공유하고자 합니다. 제가 격은 문제는 채팅 기능에서 STOMP 연결 자체는 정상적으로 되지만, 전송 시점에 Authorization 헤더가 포함되지 않아 Principal이 null이 되는 문제입니다. StompHeaderAccessor accessor = StompHeaderAccessor.wrap(message);이 문제는 위의 코드를 아래처럼 수정하여 해결했습니다.StompHeaderAccessor accessor = MessageHeaderAccessor .getAccessor(message, StompHead.. 2025. 12. 14. [Spring / JWT] RefreshToken과 적용 RefreshToken Refresh Token은 Access Token을 재발급할 때 사용하는 키입니다. Access Token이 긴 만료 시간을 가지게 되면, 탈취당하여 악의적인 공격에 사용될 수 있습니다. 이를 해결하기 위해서 Access Token의 만료 시간을 짧게 유지하고, 상대적으로 긴 만료 시간을 가지는 Refresh Token을 통해 Access Token을 재발급받음으로써 사용자가 로그아웃 없이 로그인 상태를 유지할 수 있게 하여 해결합니다. ✔️ JWT의 설명은 여기에서 확인 가능합니다.🏷️ Access Token만 사용시 문제점JWT를 이용해서 프로젝트를 진행 했었는데 그 당시에는 JWT에 대해 이해도 부족하여 AccessToken만을 사용하고 만료 시간을 길게 사용했지만 이 선택.. 2025. 12. 13. [Spring] Pageable PageablePageable은 Spring Framework (특히 Spring Data)에서 페이징 처리를 쉽게 하기 위해 제공하는 인터페이스입니다. 즉, "어떤 페이지를, 몇 개씩 가져올지 알려주는 정보"라고 이해하면 됩니다. 이러한 페이징을 개발하기 위해서는 page 관련 쿼리를 파라미터로 받아서 직접 처리하는 방법이 있었지만 Spring 프로젝트에서는 효과적으로 페이징을 처리할 수 있게 방법이 있습니다.🏷️ 의존성// jpa를 사용 안하는 경우implementation 'org.springframework.data:spring-data-commons'// jpa를 사용하는 경우implementation 'org.springframework.boot:spring-boot-starter-dat.. 2025. 4. 8. [Spring] BCryptPasswordEncoder BCryptPasswordEncoder 스프링 시큐리티(Spring Seurity) 프레임워크에서 제공하는 클래스 중 하나로 비밀번호를 암호화하는 데 사용할 수 있는 메서드를 가진 클래스입니다.🏷️ 특징BCryptPasswordEncoder는 BCrypt 해싱 함수(BCrypt hashing function)를 사용해서 비밀번호를 인코딩해주는 메서드와 사용자의 의해 제출된 비밀번호와 저장소에 저장되어 있는 비밀번호의 일치 여부를 확인해 주는 메서드를 제공합니다.PasswordEncoder 인터페이스를 구현한 클래스입니다.생성자의 인자 값(verstion, strength, SecureRandom instance)을 통해서 해시의 강도를 조절할 수 있습니다.🏷️ 의존성// securityimplemen.. 2025. 4. 4. 이전 1 2 3 4 ··· 6 다음