전자정부프레임워크를 3.7에서 4.0으로 버전을 올리는 중에 에러발생
- 작성자 :
- 선*을
- 작성일 :
- 2024-07-24 11:39:36
- 조회수 :
- 519
- 구분 :
- 개발환경 / 4.0
- 진행상태 :
- 완료
Q
전자정부프레임워크를 3.7에서 4.0으로 버전을 올리는 중에 기존 3.7에서는 전혀 오류가 나지 않았던 곳에서 오류가 두가지 발생해 문의드립니다.
1. 첨부파일에 올려드린 결과값.txt 파일에서와 같이 3.7에서는 값이 "tarcryList" 배열 하나에 잘 담기는데 4.0으로 버전을 올리고 collection에서 값을 담을 때 "tarcryList"배열 하나가
아닌 조회한 93개로 배열을 생성해 "nested exception is org.apache.ibatis.exceptions.TooManyResultsException:"에러를 냅니다.
첨부파일 중 resultMap.jpg파일안에 selectid= "selectPrcerStatsDetail" 호출했을 때 오류가 발생합니다.
이럴 때 설정 값을 바꿔줘야 하는 부분이 있는지 궁금합니다. 이와 관련하여 resultMap.jpg/ 호출쿼리.jpg/1번에러 콘솔로그.jpg 파일을 첨부합니다.
2. The request was rejected because the URL contained a potentially malicious String ";"
이와 관련하여 2번에러 콘솔로그 파일을 첨부합니다.
이에러는 어떻게 처리를 해줘야할까요?
1. 첨부파일에 올려드린 결과값.txt 파일에서와 같이 3.7에서는 값이 "tarcryList" 배열 하나에 잘 담기는데 4.0으로 버전을 올리고 collection에서 값을 담을 때 "tarcryList"배열 하나가
아닌 조회한 93개로 배열을 생성해 "nested exception is org.apache.ibatis.exceptions.TooManyResultsException:"에러를 냅니다.
첨부파일 중 resultMap.jpg파일안에 selectid= "selectPrcerStatsDetail" 호출했을 때 오류가 발생합니다.
이럴 때 설정 값을 바꿔줘야 하는 부분이 있는지 궁금합니다. 이와 관련하여 resultMap.jpg/ 호출쿼리.jpg/1번에러 콘솔로그.jpg 파일을 첨부합니다.
2. The request was rejected because the URL contained a potentially malicious String ";"
이와 관련하여 2번에러 콘솔로그 파일을 첨부합니다.
이에러는 어떻게 처리를 해줘야할까요?
환경정보
-
- OS 정보 :
- 표준프레임워크 버전 : 4.0
- JDK(JRE) 정보 :
- WAS 정보 : tomcat9.0
- DB 정보 : oracle
- 기타 환경 정보 :
A
안녕하세요.
표준프레임워크 센터입니다.
1번 문의의 경우
하나의 결과를 반환해야 하는 selectOne() 메서드가
여러 개의 결과를 반환하여 발생한 예외로
제공해주신 정보만으로는 원활한 답변이 어렵습니다.
2번 문의의 경우
표준프레임워크 시큐리티 간소화 버전이 올라가면서
Spring security 버전도 업그레이드 되었고
';' 문자에 대한 필터링이 추가되었습니다.
그러므로 XSS 예방을 위해 ';' 문자를 제거해 주시거나
제거가 어려우신 경우
아래 예시와 같이 Spring security 설정을 통해
StrictHttpFirewall bean에 ';' 문자를 허용해 주시는 방법이 있으며
Tomcat v6.0.30 이상의 구성 기준으로는
쿠키 기반 세션 추적 방식 적용으로 ';' 문자 필터링을 우회할 수도 있습니다.
감사합니다.
표준프레임워크 센터입니다.
1번 문의의 경우
하나의 결과를 반환해야 하는 selectOne() 메서드가
여러 개의 결과를 반환하여 발생한 예외로
제공해주신 정보만으로는 원활한 답변이 어렵습니다.
2번 문의의 경우
표준프레임워크 시큐리티 간소화 버전이 올라가면서
Spring security 버전도 업그레이드 되었고
';' 문자에 대한 필터링이 추가되었습니다.
그러므로 XSS 예방을 위해 ';' 문자를 제거해 주시거나
제거가 어려우신 경우
아래 예시와 같이 Spring security 설정을 통해
StrictHttpFirewall bean에 ';' 문자를 허용해 주시는 방법이 있으며
ex) context-security.xml <bean id="egovStrictHttpFirewall" class="org.springframework.security.web.firewall.StrictHttpFirewall"> <property name="allowSemicolon" value="true"/> </bean> <security:http-firewall ref="egovStrictHttpFirewall"/> |
Tomcat v6.0.30 이상의 구성 기준으로는
쿠키 기반 세션 추적 방식 적용으로 ';' 문자 필터링을 우회할 수도 있습니다.
ex) web.xml <session-config> <tracking-mode>COOKIE</tracking-mode> </session-config> |
감사합니다.