[ 시큐리티 ]
○ 허가된 사용자만이 특정 웹페이지에 접근할 수 있도록 제한하는 보안 기능
○ 사용자가 권한이 없는 데이터에 접근하는 것을 막거나 웹 공격자가 전송데이터를 중간에 가로채는 것을 방지
○ 인증(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>
'프로그래밍 언어 > 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 |