본문 바로가기

표준프레임워크_eGovFrame/공통컴포넌트_Common Components

표준프레임워크 공통컴포넌트 보안강화 패치

표준프레임워크 공통컴포넌트 보안강화 패치 후 문제 발생 할 경우 보면 됨 

egovframework.com.utl.wed.web.EgovWebEditorImageController.java

 - 기존코드

     /**

     * 이미지 view를 제공한다.

     *

     * @param request

     * @param response

     * @throws Exception

     */

    @RequestMapping(value="/utl/web/imageSrc.do",method=RequestMethod.GET)

    public void download(HttpServletRequest request, HttpServletResponse response) throws Exception {

String subPath = this.decrypt(request.getParameter("path"));

//2017.12.12 - 출력 모듈 경로 변경 취약점 조치

//저장파일경로 > 디텍토리 변경 체크

subPath = EgovWebUtil.filePathBlackList(subPath);

String physical = this.decrypt(request.getParameter("physical"));

physical = EgovWebUtil.filePathBlackList(physical);

String mimeType = this.decrypt(request.getParameter("contentType"));

EgovFormBasedFileUtil.viewFile(response, uploadDir, subPath, physical, mimeType);

    }

 - 변경코드

     /**

     * 이미지 view를 제공한다.

     *

     * @param request

     * @param response

     * @throws Exception

     */

    @RequestMapping(value="/utl/web/imageSrc.do",method=RequestMethod.GET)

    public void download(HttpServletRequest request, HttpServletResponse response) throws Exception {

//2017.12.12 - 출력 모듈 경로 변경 취약점 조치

//저장파일경로 > 디텍토리 변경 체크 

          String subPath = this.decrypt(replaceParameter(request.getParameter("path")));

subPath = EgovWebUtil.filePathBlackList(subPath);

String physical = this.decrypt(replaceParameter(request.getParameter("physical")));

physical = EgovWebUtil.filePathBlackList(physical);

String mimeType = this.decrypt(replaceParameter(request.getParameter("contentType")));

EgovFormBasedFileUtil.viewFile(response, uploadDir, subPath, physical, mimeType);

    }



로 조치가 되었었는데 주기적으로 사진 업로드 후 이미지 경로 복호화 시 에러가 남.


- GET 메소드에 의해 얻어진 데이터들은 환경변수 QUERY_STRING에 저장되어 있는데, 이러한 데이터들은 name=value의 쌍으로 얻어집니다.

 요게 안맞아버리면 당연히 안되징.



간헐적으로 왜 에러가 날까? 보니 base64 에러임. 암호해쉬 디버깅 시 경로에 '+' string이 들어가면 자동으로 ' ' 공백으로 바꿔버리는 버그가 있음.

디코딩 시 에러라 보면됨.



그 외에도 존재하지만 그 외에서 걸리는 걸 못봄(테스트 20번 해봄)


복호화 메소드or미소드(도대체 뭘 써야하나?) 를 EgovWebEditorImageController.java 에 추가함.


문제 없이 됨.

    public String replaceParameter(Object obj){

     return ((String)obj).replaceAll(" ", "+");

    }

    

    /**