[에러] org.springframework.security.web.firewall.RequestRejectedException: The request was rejected because the URL contained a potentially malicious String "%3B"
2024. 5. 16. 17:06ㆍ에러 창고
728x90
SMALL
[Reason]
api url을 호출할 때 "%3B" 라고 하는 블랙리스트 텍스트가 포함되어 요청이 거절되었다는 의미의 에러이다.
사실 이 해당 에러가 발생된다고 하더라도 api 호출은 정상적으로 실행이 가능하다.
[Solution]
이 에러는 다른 개발자 분의 방법을 통해 해결하고자 하였다.
aop를 통해 api를 호출할 때 먼저 선행적으로 doFilter를 가로채서 해당 요청에 대한 블랙 리스트 텍스트를 잡아 발생되는 해당 에러를 익셉션으로 빠지게끔 하는 것이다.
(1)
aop 디펜던시를 추가해준다.
(2)
@Slf4j
@Aspect
@Component
public class AopConfig {
@Around("execution(public void org.springframework.security.web.FilterChainProxy.doFilter(..))")
public void handleRequestRejectedException (ProceedingJoinPoint pjp) throws Throwable {
try {
pjp.proceed();
} catch (RequestRejectedException exception) {
HttpServletResponse response = (HttpServletResponse) pjp.getArgs()[1];
response.sendError(HttpServletResponse.SC_BAD_REQUEST);
}
}
}
aop 를 만들어준다.
앞서 org.springframework.security.web.FilterChainProxy.doFilter(..) 를 Around로 선행적으로 잡아 ProceedingJoinPoint, 즉, doFilter의 조인 포인트에 발생되는 해당 에러를 잡아 exception으로 빼서 Response에 error라고 알려주게끔 틀어주는 것이다.
728x90
반응형
LIST