Secure Coding Guide | 신뢰되지 않은 URL 주소로 자동 접속 연결

정의

검증되지 않은 외부 입력값이 URL링크 생성에 사용되어 악의적인 사이트로 자동 접속될 수 있는 보안약점이다.

영향

악성코드가 설치되거나 중요 정보 노출된다.

조치 방법

URL 파라미터에 대한 검증을 수행하지 않은 경우, 발생한다.

안전하지 않은 jsp 코드 일부

<html>
<head>
</head>
<body>
    URL : ${param.url}
  <%
       if (request.getParameter("url") != null)
           response.sendRedirect(request.getParameter("url"));
  %>
</body>
</html>

URL 파라미터에 대한 검증을 수행하지 않았다.

안전한 jsp 코드 일부

<html>
<head>
</head>
<body>
    URL : ${param.url}
    <%
    // 다른 페이지 이동하는 URL 리스트
    String allowURL[] = { "http://url1.com", "http://url2.com", "http://url3.com" };
		
    // 입력받는 url은 미리 정해진 URL의 order로 받음
    if (request.getParameter("url") != null)
        Integer n = Integer.parseInt(url);

    if (n >= 0 && n < 3)
        response.sendRedirect(allowURL[n]);
 
	%>
</body>
</html>

이동에 대한 URL을 선택하게끔 수정한다.