1. 스프링 시큐리티(Spring Security)란?
Spring 기반 애플리케이션의
보안(인증과 권한, 인가 등)을 담당하는
spring의 하위 프레임워크
2. Spring Security의 특징
1) 애플리케이션의 모든 URL에 대한 인증 요구
인증, 인가되지 않은 사용자는 Security Filter에서 걸러낸다.
ex) login 창으로 이동, 403 에러 발생
2) 시큐리티 커스터마이징
시큐리티 내의 소스를 커스터마이징 할 수 있다.
ex) LoginSuccessHandler, LoginFailHandler, UserDetailsService 등
3) CSRF 공격, 세션 고정 방지
CSRF, 세션 고정 등 세션을 활용한 공격들을 방지한다.
- CSRF(Cross Site Request Forgery)
사용자의 의지와는 무관하게 공격자가 수정, 삭제, 등록 등을 특정 웹사이트에 요청하게 만드는 공격
- 세션 고정(Session Fixation)
사용자에게 고정된 세션ID가 발급되는 경우, 공격자가 세션ID를 탈취하여 접근 및 권한을 우회하는 공격
4) HTTP 보안 헤더
HTTP 헤더를 강화하여 XSS, X-Frame-Options 등에 대응한다.
- HSTS (HTTP Strict Transport Security)
WEB에 접근할 때, 강제적으로 HTTPS로 접근하도록 한다.
- XSS(Cross-Site Scripting) 보안
스크립트가 포함된 URL을 필터링 한다.
- X-Frame-Options
<frame>, <iframe>, <object> 등의 태그를 이용한 ClickJacking 공격에 대응한다.
3. Spring Security 설정
- pom.xml : 라이브러리 추가
<!-- Security -->
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-core</artifactId>
<version>${org.springframework-version}</version>
</dependency>
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-config</artifactId>
<version>${org.springframework-version}</version>
</dependency>
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-web</artifactId>
<version>${org.springframework-version}</version>
</dependency>
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-taglibs</artifactId>
<version>${org.springframework-version}</version>
</dependency>
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-test</artifactId>
<version>${org.springframework-version}</version>
</dependency>
- xml 파일 설정
- security-context.xml 설정