Spring Security

WebDev/본과정 / / 2021. 5. 17. 10:50

1. 스프링 시큐리티에 대하여 설명하시오.

1-1. 정의

: Spring에서 제공하는 인증 및 권한에 대한 프레임워크 Spring Runtime 내 Core Container 계층에서 관리한다. (spring-core.jar)

 

1-2. 기능 요소

  • 인증과 권한
  • 암호화에 대한 인코딩 및 디코딩
  • CSRF, XSS와 같은 공격 기법 대처
  • Security Session 객체
  • JSP에서의 Security 요소 사용

 

1-3. 작동원리

: Spring Security 내부에서 사전 구현된 자바 파일로 html 문법들을 통해 캡슐화된 형태로 불러온다. 또한 필터에 의해 따로 컨트롤러에서 처리하지 않아 최소한의 xml내 태그로도 인증화면을 구현할 수 있다.

 

 

2. 스트링시큐리티를 적용하기 위한 기본 설정 및 세팅을 설명하시오.

step-1. pom.xml에서 의존 설정을 추가한다. (버전별로 다를 수 있으니 주의한다.)

<dependency>
	<groupId>org.springframework.security</groupId>
	<artifactId>spring-security-core</artifactId>
	<version>${org.security-version}</version>
</dependency>      
<dependency>
	<groupId>org.springframework.security</groupId>
	<artifactId>spring-security-web</artifactId>
	<version>${org.security-version}</version>
</dependency>
<dependency>
	<groupId>org.springframework.security</groupId>
	<artifactId>spring-security-config</artifactId>
	<version>${org.security-version}</version>
</dependency>     
<dependency>
	<groupId>org.springframework.security</groupId>
	<artifactId>spring-security-taglibs</artifactId>
	<version>${org.security-version}</version>
</dependency>

 

step-2. web.xml에서 필터를 설정한다.

<filter>
	<filter-name>springSecurityFilterChain</filter-name>
	<filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
</filter>
<filter-mapping>
	<filter-name>springSecurityFilterChain</filter-name>
	<url-pattern>/*</url-pattern>
</filter-mapping>

 

step-3. context.xml에서 설정한다. (namespace에 Spring Security 지정되었는지도 확인)

<?xml version="1.0" encoding="UTF-8"?>
<beans:beans xmlns="http://www.springframework.org/schema/security"
   xmlns:beans="http://www.springframework.org/schema/beans"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation="http://www.springframework.org/schema/security 
      http://www.springframework.org/schema/security/spring-security.xsd 
      http://www.springframework.org/schema/beans 
      http://www.springframework.org/schema/beans/spring-beans.xsd">
   
   <http><form-login /></http> 
   <authentication-manager></authentication-manager>
</beans:beans>

 

 

3. 인증과 권한에 대하여 설명하시오.

3-1. 인증(Authentication)

: 리소스에 접근하기 전 자신을 증명하는 과정. 로그인시 아이디와 비밀 번호와 같은 개인정보들을 수단으로 한다.

 

3-2. 권한(Authorization)

: 리소스에 접근하기 위해 남에 의해 부여된 자격. 이때, 리소스들을 접근할 수 있는 자격들을 단계별로 달리한다.

 

 

4. XSS 와 CSRF에 대하여 설명하시오.

4-1. XSS

: 크로스 사이트 스크립팅의 약자로, 공격자 악의적인 스크립트의 내용들을 지정된 사이트에 심어 이용자를 특정 경로로 유도한 후 개인정보 유출 및 악성코드 배포를 하게끔 하는 공격기법.

 

4-2. CSRF

: 사이트 간 요청 위조로, 공격자가 사전에 악의적으로 심어둔 요청 양식 이용자가 입력 후 전송하도록 유도한 후, 이용자의 의지와 무관하게 이 정보들을 침해받게끔 하는 공격기법.