[Error_Log] URLDecoder: Illegal hex characters in escape (%) pattern 관련 에러 발생
본문 바로가기
IT 이야기/JBoss EAP

[Error_Log] URLDecoder: Illegal hex characters in escape (%) pattern 관련 에러 발생

by 찬찬이 아빠 2020. 10. 23.
반응형

JBoss EAP 에러 로그에서 아래와 같이 URLDecoder: Illegal hex characters in escape (%) pattern 에러가 발생하였습니다.

12:34:56.78	ERROR	[org.apache.catalina.core.ContainerBase.[jboss.web].[default-host].[/].[action]] (ajp-/10.xxx.xxx.xxx:8309-7) JBWEB000236: Servlet.service() for servlet action threw exception: java.lang.IllegalArgumentException: URLDecoder: Illegal hex characters in escape (%) pattern - For input string: "_인"
	at java.net.URLDecoder.decode(URLDecoder.java:194) [rt.jar:1.8.0_161]
	at glabfw.util.StringUtil.getUrlDecode(StringUtil.java:890) [ecc_glabfw.jar:]
	at glabfw.web.view.resolver.DownloadViewResolver.renderMergedOutputModel(DownloadViewresolver.java:126) [ecc_glabfw.jar]
... 생략 ...


해당 오류는 URL Decode 과정에서 파라미터에 % 값이 들어와 % 이후 2 문자가 정상적인 16진수 값이 아닐 때 발상해는 오류일 가능성이 높습니다.

AP 소스에서 파라미터 값에 %가 들어올 때 %를 %25로 변환한느 로직을 추가하길 권장드립니다.

AP 소스에 %값을 %25로 변환하는 로직 예시는 아래와 같습니다.

String tmp = request.getParameter("title").replace("%", "%25");
String s_title = new String(URLDecoder.decode(request.getParameter(tmp, UTF-8));
반응형

댓글