본문 바로가기

안녕하세요!

프로그래밍 언어/JSP

JSP_22-11-02

[ 시큐리티 ]

○ 허가된 사용자만이 특정 웹페이지에 접근할 수 있도록 제한하는 보안 기능

○ 사용자가 권한이 없는 데이터에 접근하는 것을 막거나 웹 공격자가 전송데이터를 중간에 가로채는 것을 방지

○ 인증(Authentication)

    - 사용자가 웹 브라우저를 사용해 웹 페이지에 접근할 대 JSP 컨테이너는 요청된 페이지에 보안 제약이 있는지

      확인하고 사용자에게 사용자의 이름과 암호를 확인해 수행

○ 권한 부여(Authorization)

    - 특정 사용자가 해당 페이지에 접근할 수 있는지 확인해 승인

시큐리티 처리 방법 설명
선언적 시큐리티 코드 작성 없이 web.xml 파일에 보안 구성을 작성해 사용자의 인증 수행
프로그래밍 시큐리티 request 내장 객체의 메소드를 통해 사용자 원한 부여 처리하는 프로그래밍 방식

[ 웹 서버에 역할과 사용자 구성하기 ]

○ '/설치된 톰켓 루트/conf/폴더 내 tomcat-users.xml 파일'

<?xml version="1.0" encoding="UTF-8"?>
	...(생략)...
</tomcat-users ...>
	...(생략)...
<!--
	<role rolename="tomcat"/>
    <role rolename="role1/>
    <user username="tomcat" password="<must-be-changed>" roles="tomcat"/>
    <user username="both" password="<must-be-changed>" roles="tomcat.role1"/>
    <user username="role1" password="<must-be-changed>" roles="role1"/>
-->
</tomcat-users>

[ 선언적 시큐리티 ]

○ 웹 애플리케이션 배포 설명자 web.xml 파일에 보안 구성을 작성해 수행하는 방식

○ 웹 애플리케이션의 보안을 달성하기 위해 별도의 코드 작성할 필요 없이 web.xml 파일에 보안 구성을 작성해

   웹 페이지에 접근 가능케 함

○ web.xml 파일에는 보안 역할, 보안 제약 사항, 인증 처리 등을 설정해 보안 구성

시큐리티 역할 선정

    - <security-role> : 웹 애플리케이션에 사용하는 역할 나열하는 요소

    - web.xml 파일에 구성

<security-role>
	<role-name>역할 이름</role-name>
</security-role>
<security-role>
	<role-name>manager</role-name>
</security-role>
<security-role>
	<role-name>employee</role-name>
</security-role>

시큐리티 제약 사항 설정

    - 사용자의 요청 URL에 대한 접근 권한 정의

    - web.xml 파일에 접근 권한 내용 구성

<security-constraint>
	<web-resource-collection>...</web-resource-collection>
    <auth-constraint>...</auth-constraint>
    <user-data-constraint>...</user-data-constraint>
<security-constraint>
요소 설명
<web-resource-collection> 웹 자원에 대한 접근 설정
<auth-constraint> 웹 자원에 접근할 수 있는 인증된 사용자 설정
<user-data-constraint> 데이터 전송 시 데이터 보호 설정

[ fmt:formatNumber ]

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>NumberType.jsp</title>
</head>
<body>
	<h1>금  액 : <fmt:formatNumber value="1230000" type="currency" currencySymbol="㈜" /></h1>
	<h1>퍼센트 : <fmt:formatNumber value="0.99" type="percent" /></h1>
</body>
</html>

 

[ fmt:formatDate ]

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<%@ page import="java.util.*" %>
<c:set var="date" value="<%=new Date() %>" />
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>DateTimePattern.jsp</title>
</head>
<body>
	<h1>현재의 시각</h1>
	<h2>[오늘의 날짜] <fmt:formatDate value="${date}" type="date" pattern="yyyy/MM/dd (E)" /></h2>
	<h2>[현재의 날짜] <fmt:formatDate value="${date}" type="time" pattern="(a) hh:mm:ss"/></h2>
</body>
</html>

 

[ c:redirect ]

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<% // Redirect.jsp %>
<c:redirect url="Multiply2.jsp">
	<c:param name="NUM1" value="3"/>
	<c:param name="NUM2" value="44"/>
</c:redirect>

 

[ c:if ]

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Maximum.jsp</title>
</head>
<body>
	<h1>최댓값 구하기</h1>
	<c:if test="${param.NUM1 - param.NUM2 >= 0}">
		${param.NUM1}
	</c:if>
	<c:if test="${param.NUM1 - param.NUM2 < 0}">
	<h1>
		${param.NUM2}
	</h1>
	</c:if>
</body>
</html>

 

[ c:choose ]

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Greeting.jsp</title>
</head>
<body>

	<h1>인사하기</h1>
	<c:choose> <!-- switch문과 동일 -->
		<c:when test="${param.NUM == 0}">
			<h1>처음 만나 뵙겠습니다.</h1>
		</c:when>
		<c:when test="${param.NUM == 1}">
			<h1>또 만나 뵙네요.</h1>
		</c:when>
		<c:otherwise>
			<h1>자주 뵙네요?</h1>
		</c:otherwise>
	</c:choose>

</body>
</html>

 

[ c:forTokens, c:set ]

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>WildKingdom.jsp</title>
</head>
<body>
	<h1>호랑이님의 생일잔치에는 누가 왔나요?</h1>
	<c:set var="guests" value="토끼^^거북이~강아지$$$여우*사슴"/>
	<c:forTokens var="animal" items="${guests}" delims="^~$*">
		<h1>${animal}</h1>
	</c:forTokens>

</body>
</html>

 

[ c:forEach ]

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>LunchMenuView.jsp</title>
</head>
<body>

	<h1>오늘의 점심 메뉴입니다.</h1>
	<ul>
		<c:forEach var="dish" items="${MENU}">
		<li><h2>${dish}</h2></li>
		</c:forEach>
	</ul>

</body>
</html>

 

[ c:catch ]

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%
	String	str1	= request.getParameter("NUM1");
	String	str2	= request.getParameter("NUM2");
	int		num1	= Integer.parseInt(str1);
	int		num2	= Integer.parseInt(str2);
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Divide.jsp</title>
</head>
<body>

	<h1>나누기</h1>
	<c:catch var="e">
		<% int result = num1 / num2; %>
		<h1>나눗셈 결과 : <%=result %></h1>
	</c:catch>
	<c:if test="${e != null}"> <!-- e != null : Excepion이 발생했는지 체크하는 조건식 -->
		<h1>에러 메시지 : ${e.message}</h1>
	</c:if>
</body>
</html>
728x90
반응형

'프로그래밍 언어 > JSP' 카테고리의 다른 글

쇼핑몰 만들기(1)  (0) 2022.11.07
JSP_22-11-04  (0) 2022.11.04
JSP_22-11-01  (0) 2022.11.01
JSP_22.10.31  (0) 2022.10.31

loading