△/SecureCoding

신뢰 되지 않는 URL 주소로 자동 접속 연결

KkingKkang 2022. 11. 15. 17:11
728x90

- 자동 연결할 외부 사이트의 URL 과 도메인은 화이트 리스트로 관리하고, 사용자 입력값을 자동 연결할 사이트주소로 사용하는 경우에는 입력된 값이 화이트 리스트에 존재하는지 확인해야 한다. 

안전하지 않은 코드 ▼

protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOExcepetion {
	String query = request.getQueryString();
    if(query.contains("url")) {
    	String url = request.getParameter("url");
        response.sendRedirect(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) {
    }
 }

 

 

728x90