본문 바로가기

보안/시큐어코딩

[시큐어코딩실습] 오픈리다이렉트 취약점제거 안전한 코딩

(1) 실습화면: openeg 사이트 > 보안코딩 테스트 > 오픈리다이렉트

 

(2) 실습파일: kr.co.openeg.test.controller.TestController.java

 

(3) 취약점 동적진단:

 

    요청URL 값을 변조하여 허용되지 않은 사이트로 요청을 이동하도록 테스트 한다.   

 

(4) 시큐어코딩기법 :  

 

    리다이렉트를 허용할 URL 목록을 하드코딩하여, 사용자의 요청에 따라 지정된 URL을 이용하도록 제약을 준다.





protected void doGet(HttpServletRequest request, HttpServletResponse response)  

     throws ServletException, IOException {

 

    // 다른 페이지 이동하는 URL 리스트를 만든다.

    String allowURL[] = { "http://url1.com", "http://url2.com", "http://url3.com" };

    // 입력받는 url은 미리 정해진 URL order로 받는다.

    String nurl = request.getParameter("nurl");

 

    try {

        Integer n = Integer.parseInt(nurl);

            if ( n >= 0 && n < 3)

                response.sendRedirect(allowURL[n]);

    } catch (NumberFormatException nfe) {

                             //  입력 값이 숫자가 아닐 경우 적절히 에러를 처리한다.

    }

}