시큐리티

조수경·2022년 1월 17일
0

JSP

목록 보기
31/45

1. 시큐리티란?

  • 허가된 사용자만이 접근할 수 있도록 제한하는 보안 기능
  • 사용자가 권한이 없는 데이터에 접근하는 것을 막아줌
  • 웹 공격자가 전송 데이터를 중간에 가로채는 것도 막아줌~ (스니핑 방지)

2. 프로세스

  • 사용자가 웹 페이지에 접근하면
  • JSP 컨테이너(Tomcat)는 요청된 페이지에 보안 제약/약속(Constranints)이 있는지 확인
  • 약속이 되어있다면 사용자에게 인증(authentication)을 요청하고
  • 권한 부여(authorization) : JSP 컨테이너는 사용자가 해당 페이지에 접근할 수 있는지 확인하고 접근이 가능하면 승인해준다.

3. 역할

  • 사용자가 권한이 없는 데이터에 접근하는 것을 막는다.
  • 스니핑(sniffing) : 웹 공격자가 전송 데이터를 중간에 가로채는 것(냄새맡는것 ff(킁킁..))을 방지한다.
    <->스푸핑: 가로채고 변조해서 돌려줌

4. 선언적 시큐리티

  • web.xml 파일(웹 애플리케이션(JSPBook) 배포 설명자)에 보안 구성을 작성하여 수행
  • 보안 역할(role), 보안 제약 사항: (나 톰캣이랑 약속했어: web.xml에서 함), 인증 처리(login.jsp, login-failed.jsp) 설정

tomcat-user.xml

web.xml에 추가

<security-role>
		<role-name>role1</role-name>
	</security-role>
	<security-constraint>
		<web-resource-collection>
			<web-resource-name>JSPBook</web-resource-name>
			<!-- 접근을 제한할 요청 경로 -->
			<url-pattern>/ch10/security01.jsp</url-pattern>
			<http-method>GET</http-method>
		</web-resource-collection>
		<auth-constraint>
			<description></description>
			<!-- 권한이 부여된 role 이름 -->
			<role-name>role1</role-name>
		</auth-constraint>
	</security-constraint>
	<!-- 시큐리티 인증 설정 -->
	<login-config>
		<!-- BASIC 인증 처리 기법으로 설정 -->
		<auth-method>BASIC</auth-method>
	</login-config>

security01.jsp를 실행하면

tomcat에서 설정해준 이름과 비밀번호를 입력하면

인증이 완료됨

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

<title>Security</title>
</head>
<body>
	<h2>인증 성공했습니다.</h2>
	
</body>
</html>

쫌더 깔끔하게 만들어보자!!!!

web.xml 설정

security01.jsp

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

<title>Security</title>
</head>
<body>
	<h2>인증 성공했습니다.</h2>
	<h4>사용자명 : <%=request.getRemoteUser()%></h4>
	<h4>인증방법 : <%=request.getRemoteUser()%></h4>
	<h4>
		역할명(role) tomcat에 속한 사용자가 로그인한건가요?
		<%=request.isUserInRole("tomcat") %>
	</h4>
	<h4>
		역할명(role) role1에 속한 사용자가 로그인한건가요?
		<%=request.isUserInRole("role1") %>
	</h4>
</body>
</html>

login.jsp

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

<title>Security</title>
</head>
<body>
	<!-- 폼 기반 인증 처리를 위해 j_security_check을 사용 -->
	<form name="loginForm" action="j_security_check"
	  method="post">
	  <p>사용자명 : <input type="text" name="j_username" /></p>
	  <p>비밀번호 : <input type="password" name="j_password" /></p>
	  <p><input type="submit" value="전송" /></p>
	</form>
</body>
</html>

login_failed.jsp

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

<title>Security</title>
</head>
<body>
	<h2>인증 실패했습니다.</h2>
</body>
</html>
profile
신입 개발자 입니다!!!

0개의 댓글