sub_title
 JSP/Servlet
제   목 JSP에서 페이지 직접 접근 막기
작성자 웹스톤 등록일 2007-09-29 01:14:04 조회수 22,813
JSP에서 페이지 직접 접근 막기

URL을 통해서 JSP 페이지에 직접 접근하는 것을 차단해야하는 경우가 있습니다.
특히 스트러츠처럼 프론트 콘틀롤러 패턴을 적용한 시스템에서는 서블릿 콘트롤러만이 JSP를 실행할 수 있어야하죠.

그런데 JSP 페이지를 일반 HTML 페이지와 동일하게 취급하여 배치하게 되면,
영리한(?) 사용자가 JSP 경로를 알아내어 서블릿을 통하지 않고 실행할 수가 있습니다.

JSP 페이지를 매핑된 경로(*.do)를 통해 호출하는 것이 정상이지만, 여전히 JSP페이지는 URI접근에 노출되어 있기 때문에 사용자가 매핑경로를 통하지 않고 JSP 페이지를 실행하는 것을 막지는 못한다는 얘깁니다.

이를 해결할 여러 가지 방법이 있습니다.

(1) JSP를 WEB-INF 디렉토리 밑에 두는 방법
모든 JSP 페이지를 WEB-INF 디렉토리 아래에 두는 방법입니다. WEB-INF 디렉토리는 클라이언트에게는 접근이 금지되어 있으나, 컨테이너는 접근이 허용됩니다. 다시 말하면 사용자는 WEB-INF 아래의 JSP 페이지를 URI 로 접근하여 실행할 수 없으나 컨테이너는 실행 가능하다는 것입니다. 스트러츠의 경우는 아래처럼 JSP 페이지를 /WEB-INF 아래에 배치하여 매핑을 정의하면 됩니다.

<action path="/saveSubscription"
                  type="example.SaveSubscriptionAction
">
         <forward="/WEB-INF/jsp/subscription.jsp"/>
</action>


이 방법은 그러나 JSP 페이지와 HTML/이미지 파일이 분리되어 존재하므로 다소 혼란스럽고, 화면개발시 상대경로를 확인하기 위해 JSP 페이지의 매핑경로를 알아야하는 불편이 있습니다.

※ WebLogic 6.1에서는 WEB-INF 밑의 JSP파일은 서블릿에서 포워딩하는 것이 불가능하더군요.(웹로직 6.1의 버그로 생각됩니다.)

(2) web.xml에서 JSP페이지에 보안설정을 하는 방법
web.xml에 *.jsp 패턴의 모든 URL에 대해서 누구도 실행을 할 수 없게 설정해줄 수 있습니다. 아래 처럼 세팅하면 됩니다.

<security-constraint>
---<display-name>JSP Protection</display-name>
---<web-resource-collection>
-----<web-resource-name>SecureJSPPages</web-resource-name>
-------<url-pattern>*.jsp</url-pattern>
---</web-resource-collection>
---<auth-constraint>
-----<role-name>nobody</role-name>
---</auth-constraint>
</security-constraint>

<security-role>
---<description>
---Nobody should be in this role so JSP files are protected
---from direct access.

---</description>
---<role-name>nobody</role-name>

</security-role>


어떤 의도를 가진 사용자가 JSP 페이지를 URL로 직접 접근하게 되면 서버는
HTTP 응답코드 401번(Unauthorized) 페이지를 보여줍니다.

좀더 우아하게 처리하려면 401번 응답 페이지를 예쁘게 만들어서 등록하면 되겠죠.

<!-- 접근 권한없음 : UNAUTHORIZED-->

<error-page>
       <error-code>401</error-code>
       <location>/error/unauthorized.html</location>
</error-page>


출처: http://www.okjsp.pe.kr
 
0
    
 
0
        list
 
※ 짧은 댓글일수록 예의를 갖추어 작성해 주시기 바랍니다.
line
reply cancel
 
번호 제목 글쓴이 추천 조회 날짜
110  JSP 파일 확장자 추출하기   admin 웹마당넷 1 / 0 23057 2009-02-25
109  다수의 페이지에 폼(Form) 전송하기   admin 웹마당넷 0 / 0 15680 2009-01-27
108  자바 프로그래밍으로 온라인 XML 데이터 검색하기   member 우슬초 0 / 0 14733 2009-01-18
107  톰캣[Tomcat]에서 세션타임 설정하기   member 티란투라 0 / 0 15247 2009-01-18
106  JSP URL클래스를 이용한 웹페이지 데이터 읽기   admin 웹마당넷 0 / 0 18400 2009-01-16
105  JSP 일정 시간이 지나면 자동으로 폼(Form) 전송하기   admin 웹마당넷 3 / 0 22203 2009-01-08
104  JSP 팝업창에 Form 태그내의 값 넘기기   admin 웹마당넷 0 / 0 347555 2008-12-19
103  JSP setContentType 메소드와 MIME 타입   admin 웹마당넷 2 / 1 46936 2008-09-22
102  [JSP] getParameterValues() 예제   member 우슬초 0 / 0 24930 2008-09-02
101  JAVA 정규표현식에 관한 자료   member 우슬초 0 / 0 10196 2008-09-01
100  JSP 월 몇주 요일에 해당하는 날짜구하기   member 티란투라 1 / 0 16247 2008-08-26
99  JAVA Vector나 ArrayList에 담은 자료를 Object 배열로 변환하기   member 티란투라 0 / 0 17328 2008-08-19
98  JSP 이전 이후 날짜 구하기   member 티란투라 0 / 0 13329 2008-08-10
97  JSP 오늘 날짜/시/분/초/요일 구하기   member 티란투라 0 / 0 29865 2008-08-09
96  JSP split 메소드를 이용한 문자열 분리하기   member 티란투라 0 / 0 39432 2008-08-05
95  JSP 특정 문자열(Pattern)의 갯수 구하기   member 티란투라 0 / 1 21527 2008-08-05
94  JSP - Java JDBC Performance Tip(1)-Select Speed up!   member 사라마음 0 / 0 13720 2008-07-29
93  JSP - MySQL 한글깨짐 해결   member 사라마음 0 / 1 23562 2008-07-29
92  CEWOLF : jsp에서 차트, 그래프 구현하기 첨부파일   member 티란투라 0 / 0 13604 2008-07-22
91  JSP URLConnection 객체를 이용한 입력스트림 제어   member 티란투라 0 / 0 15901 2008-07-15
90  JSP 파일쓰기 - 파일읽기   member 티란투라 0 / 0 36920 2008-07-10
89  JSP 특정 디렉토리에 있는 파일명들 구하기   member 티란투라 0 / 0 22511 2008-07-10
88  JSP 파일삭제   member 티란투라 1 / 0 20107 2008-07-10
87  JSP 달력(Calendar) 입니다. 이미지 첨부파일   member 티란투라 0 / 8 26145 2008-06-23
86  JAVA 자바 선택정렬 (Selection Sort) 첨부파일   member 높이뜬새 0 / 0 12956 2008-06-19
write
[2] [3] [4] [5] button