context-whitelist.xml 에서 EgovPageLink.do 화이트 리스트 처리 방법
- 작성자 :
- 조*석
- 작성일 :
- 2020-10-07 20:12:01
- 조회수 :
- 4,549
- 구분 :
- 공통컴포넌트
- 진행상태 :
- 완료
Q
안녕하세요. 현재 Enterprise Business 컴포넌트로 사이트 구축작업을 진행하고 있습니다.
EgovPageLink.do 보안패치 관련해서 화이트리스트 적용을 위해 context-whitelist.xml 파일을 /src/main/resources/egovframework/spring/com/" 폴더에 추가 해서 사용했습니다.
EgovComUtlController.java 파일에 JSP 호출작업만 처리하는 공통 함수는
/**
* JSP 호출작업만 처리하는 공통 함수
*/
@RequestMapping(value = "/EgovPageLink.do")
public String moveToPage(@RequestParam("link") final String linkPage, final HttpSession session, @RequestParam(value = "baseMenuNo", required = false) final String baseMenuNo) {
String link = linkPage;
link = link.replace(";", "");
link = link.replace(".", "");
// service 사용하여 리턴할 결과값 처리하는 부분은 생략하고 단순 페이지 링크만 처리함
if (linkPage==null || linkPage.equals("")){
link="cmm/egovError";
}
// 화이트 리스트 처리
// whitelist목록에 있는 경우 결과가 true, 결과가 false인경우 FAIL처리
if (egovWhitelist.contains(linkPage) == false) {
LOGGER.debug("Page Link WhiteList Error! Please check whitelist!");
link="cmm/error/egovError";
}
// 선택된 메뉴정보를 세션으로 등록한다.
if (baseMenuNo != null && !"".equals(baseMenuNo) && !"null".equals(baseMenuNo)) {
session.setAttribute("baseMenuNo", baseMenuNo);
}
// 안전한 경로 문자열로 조치
// link = EgovWebUtil.filePathBlackList(link);
return link;
}
위와 같이 적용했습니다.
기존에 있던 EgovLoginUsr.jsp 에서 임의로 만든 jsp/main/inc/TEST.jsp 파일을 불러오기 위해
<c:import url="/EgovPageLink.do?link=/main/inc/TEST" /> 를 적용하니
// 화이트 리스트 처리 // whitelist목록에 있는 경우 결과가 true, 결과가 false인경우 FAIL처리
if (egovWhitelist.contains(linkPage) == false) 해당 부분에서 false 를 생성되고 있습니다.
현재 context-whitelist.xml 파일에 화이트 리스트 처리 관련 소스는
<!-- /EgovPageLink.do 화이트 리스트 처리 (대상목록) -->
<util:list id="egovPageLinkWhitelist" value-type="java.lang.String">
<value>/egovframework/com/sym/mnu/stm/EgovSiteMap</value>
<value>/cmm/sym/mpm/EgovSiteMap</value>
<value>/egovframework/com/main_bottom</value>
<!-- <value>/egovframework/com/sec/rnc/EgovCallGpin</value>
<value>cmm/sec/rnc/EgovCallGpin</value>
<value>utl/sys/wsi/EgovWebStandardInspectionUriDirect</value>
<value>utl/sys/wsi/EgovWebStandardInspectionUri</value>
<value>utl/sys/wsi/EgovWebStandardInspectionUriDirectLink</value> -->
</util:list>
이렇게 되어 있습니다.
TEST.jsp 가 화이트리스트 false가 되는 이유를 알고 싶습니다.
그리고 context-whitelist.xml 대상처리 목록은 어떻게 사용하는건가요?
EgovPageLink.do 보안패치 관련해서 화이트리스트 적용을 위해 context-whitelist.xml 파일을 /src/main/resources/egovframework/spring/com/" 폴더에 추가 해서 사용했습니다.
EgovComUtlController.java 파일에 JSP 호출작업만 처리하는 공통 함수는
/**
* JSP 호출작업만 처리하는 공통 함수
*/
@RequestMapping(value = "/EgovPageLink.do")
public String moveToPage(@RequestParam("link") final String linkPage, final HttpSession session, @RequestParam(value = "baseMenuNo", required = false) final String baseMenuNo) {
String link = linkPage;
link = link.replace(";", "");
link = link.replace(".", "");
// service 사용하여 리턴할 결과값 처리하는 부분은 생략하고 단순 페이지 링크만 처리함
if (linkPage==null || linkPage.equals("")){
link="cmm/egovError";
}
// 화이트 리스트 처리
// whitelist목록에 있는 경우 결과가 true, 결과가 false인경우 FAIL처리
if (egovWhitelist.contains(linkPage) == false) {
LOGGER.debug("Page Link WhiteList Error! Please check whitelist!");
link="cmm/error/egovError";
}
// 선택된 메뉴정보를 세션으로 등록한다.
if (baseMenuNo != null && !"".equals(baseMenuNo) && !"null".equals(baseMenuNo)) {
session.setAttribute("baseMenuNo", baseMenuNo);
}
// 안전한 경로 문자열로 조치
// link = EgovWebUtil.filePathBlackList(link);
return link;
}
위와 같이 적용했습니다.
기존에 있던 EgovLoginUsr.jsp 에서 임의로 만든 jsp/main/inc/TEST.jsp 파일을 불러오기 위해
<c:import url="/EgovPageLink.do?link=/main/inc/TEST" /> 를 적용하니
// 화이트 리스트 처리 // whitelist목록에 있는 경우 결과가 true, 결과가 false인경우 FAIL처리
if (egovWhitelist.contains(linkPage) == false) 해당 부분에서 false 를 생성되고 있습니다.
현재 context-whitelist.xml 파일에 화이트 리스트 처리 관련 소스는
<!-- /EgovPageLink.do 화이트 리스트 처리 (대상목록) -->
<util:list id="egovPageLinkWhitelist" value-type="java.lang.String">
<value>/egovframework/com/sym/mnu/stm/EgovSiteMap</value>
<value>/cmm/sym/mpm/EgovSiteMap</value>
<value>/egovframework/com/main_bottom</value>
<!-- <value>/egovframework/com/sec/rnc/EgovCallGpin</value>
<value>cmm/sec/rnc/EgovCallGpin</value>
<value>utl/sys/wsi/EgovWebStandardInspectionUriDirect</value>
<value>utl/sys/wsi/EgovWebStandardInspectionUri</value>
<value>utl/sys/wsi/EgovWebStandardInspectionUriDirectLink</value> -->
</util:list>
이렇게 되어 있습니다.
TEST.jsp 가 화이트리스트 false가 되는 이유를 알고 싶습니다.
그리고 context-whitelist.xml 대상처리 목록은 어떻게 사용하는건가요?
A
안녕하세요.
표준프레임워크센터 입니다.
해당 기능의 경우
URL이 변조될수 있으므로 반드시 하이트리스트 처리를 해야 합니다.
파라미터로 전달받는 linkPage가
화이트리스트목록에 있는 것인지 반드시 확인하셔야 합니다.
화이트리스트에 있다는 것은 개발자가 의도한 URL이라는 것이고
그외의 URL이 들어오는 것은
허가되지 않은 URL로 간주할수 있습니다.
if (egovWhitelist.contains(link) == false) {
LOGGER.debug("Page Link WhiteList Error! Please check whitelist!");
link="egovframework/com/cmm/egovError";
}
다은 조건이 egovWhitelist.contains(link) == false 성립하는경우
에러페이지로 넘기는 조치가 필요합니다.
XML설정은 다음 어노테이션을 사용하여
주입을 받아야 합니다.
@Resource(name = "egovNextUrlWhitelist")
protected List<String> nextUrlWhitelist;
감사합니다.
표준프레임워크센터 입니다.
해당 기능의 경우
URL이 변조될수 있으므로 반드시 하이트리스트 처리를 해야 합니다.
파라미터로 전달받는 linkPage가
화이트리스트목록에 있는 것인지 반드시 확인하셔야 합니다.
화이트리스트에 있다는 것은 개발자가 의도한 URL이라는 것이고
그외의 URL이 들어오는 것은
허가되지 않은 URL로 간주할수 있습니다.
if (egovWhitelist.contains(link) == false) {
LOGGER.debug("Page Link WhiteList Error! Please check whitelist!");
link="egovframework/com/cmm/egovError";
}
다은 조건이 egovWhitelist.contains(link) == false 성립하는경우
에러페이지로 넘기는 조치가 필요합니다.
XML설정은 다음 어노테이션을 사용하여
주입을 받아야 합니다.
@Resource(name = "egovNextUrlWhitelist")
protected List<String> nextUrlWhitelist;
감사합니다.