본문 바로가기

JSP

프로그래밍적 시큐리티&예외처리 jsp

프로그래밍적 시큐리티는 웹 애플리케이션의 보안을 위해 코드를 작성하며 사용자의 권한 부여를 처리하는 방식이다. 선언적 시큐리티의 보안으로 충분하지 않을때 request 내장 객체의 메소드를 사용하여 사용자를 승인하는 방법
보안 관련 request 내장 객체의 메소드 
-inUserInRole() : 현재 인증된 사용자에게 설정된 역할이 있는지 확인하고 설정된 경우에는 true, 그렇지 않으면 false를 리턴한다.
-getRemotUser() : 사용자의 인증상태를 반환한다.
-getAuthType() : 서블릿을 보호하는데 사용되는 인증 방식의 이름을 반환한다.
-getProtocol() : 웹 브라우저의 요청 프로토콜을 가져온다.
-isSecure() : 웹 브라우저에서 https 요청으로 request가 들어왔는지 확인한다. 웹 브라우저에서 https로 접근하면 true를 반환하고, http로 접근하면 false를 반환한다.
-getUserPrinciple() : 현재 인증한 사용자의 이름을 포함하여 java.security.Principle 객체를 반환한다.

>프로그램이 처리되는 동안 예외가 발생했을 때 웹 서버가 제공하는 오류페이지로 이동하게 되는데 해당 페이지에는 다양한 정보가 노출되기 때문에 웹 보안이 취약해서 쉽게 해킹당할 수 있다. 따라서 웹 실행 도중에 발생할 수 있는 오류에 대비한 예외처리 코드를 작성하여 비정상적인 종료를 막고 해킹에 대비할 수 있다.

1)page 디렉티브 태그를 이용한 예외처리 : errorPage와 isErrorPage 속성을 이용한다.
<%@ page errorPage = "오류 페이지 URL" %>
-오류 페이지를 호출하는 page 디렉티브 태그의 속성
-JSP 페이지가 실행되는 도중에 오류가 발생하면 웹 서버의 기본 오류 페이지를 대신하여 errorPage 속성에 설정한 페이지가 오류 페이지로 호출
<%@ page isErrorPage = "ture"%>
-이때 오류페이지에서 exception 내장 객체를 사용할 수 있음
exception 내장 객체의 메소드
getMessage() : 오류 이벤트와 함께 들어오는 메세지를 출력
toString() : 오류 이벤트의 toString()을 호출하여 간단한 오류 메세지를 확인한다.
pritnStackTrace() : 오류 메세지의 발생 근원지를 찾아 단계별로 오류를 출력한다.

2)web.xml 파일을 이용한 예외처리 : <error-code> 또는 <exception-type>요소를 이용한다.
-web.xml설정파일에서 오류코드에 대한 이동할 페이지와 예외코드에 대한 이동할 페이지와 예외코드에 대한 이동할 페이지를 동시에 설정했을시, 예외코드에 맵핑해놓은 페이지로 우선시되어 이동한다.
<error-code> : 오류 코드를 설정하는데 사용한다.
<exception-type> : 자바 예외 유형의 정규화된 클래스 이름을 설정하는데 사용한다.
<location> : 오류 페이지의 URL을 설정하는 데 사용한다.
*web.xml 파일은 웹 애플리케이션의 /WEB-INF/폴더에 있어야 함
주요 오류 코드의 종류


주요 예외 유형의 종류


3)try-catch구문을 이용한 예외처리 : 자바 언어의 예외 처리 구문을 이용한다.
-자바의 예외처리 구문으로 스크립틀릿 태그에 작성
-try 구문에는 예외가 발생할 수 있는 코드를 작성하고, catch 구문에는 오류가 발생할 수 있는 예외 사항을 예측하여 오류를 처리하는 코드를 작성
-finally 구문에는 try 구문이 실행된 후 실행할 코드를 작성하는데 이는 생략이 가능하다.

RequestDispatcher:요청을 보내주는 클래스로 다른 페이지로 이동하는 forward()나 include()메소드를 가지고 있는 클래스이다. 이 클래스는 new 연산자로 생성하는 것이 아니라 메소드를 이용해서 생성해야 하는데 HttpServletRequest객체의 getRequestDispatcher("뷰페이지 경로.jsp")가 RequestDispatcher 객체를 생성해주는 메소드로 dispatcher객체를 생성후 forward()를 이용해서 원하는 페이지로 이동시키는데 이 때 매개변수로 request, response를 이용해서 요청과 응답에 대한 데이터를 그대로 넘겨주게 된다. 전송된 데이터를 그대로 유지하면서 주소값이 변경되지 않는 특징을 가지고 있다.

'JSP' 카테고리의 다른 글

session.jsp  (0) 2023.07.10
filter jsp  (0) 2023.07.07
다국어 처리, 시큐리티 jsp  (0) 2023.07.05
정규표현식 유효성 검사  (0) 2023.07.04
유효성 검사  (0) 2023.07.03