최종 변경 : 2024.04.21


DisableEncodeUrlFilter (spring-security-docs 6.2.4 API)


DisableEncodeUrlFilter 목적

이 필터는 DefaultSecurityFilterChain에 기본적으로 등록되는 필터로 가장 첫 번째에 위치한다.

필터가 등록되는 목적은 URL 파라미터에 세션 id가 인코딩되어 로그로 유출되는 것을 방지하기 위함이다.

커스텀 SecurityFilterChain을 생성해도 등록되며 비활성은 아래와 같이 세션 관리 설정을 disable 하면 된다.

http
        .sessionManagement((manage) -> manage.disable());

DisableEncodeUrlFilter 클래스

public class DisableEncodeUrlFilter extends OncePerRequestFilter {

	@Override
	protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain)
			throws ServletException, IOException {
			
		filterChain.doFilter(request, new DisableEncodeUrlResponseWrapper(response));
	}

	private static final class DisableEncodeUrlResponseWrapper extends HttpServletResponseWrapper {

		private DisableEncodeUrlResponseWrapper(HttpServletResponse response) {
			super(response);
		}

		@Override
		public String encodeRedirectURL(String url) {
			return url;
		}

		@Override
		public String encodeURL(String url) {
			return url;
		}
	}
}