스프링 시큐리티공부

Jaewoo Back·2024년 7월 8일
0

Spring Security공부

목록 보기
1/13
post-thumbnail
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
import org.springframework.security.config.http.SessionCreationPolicy;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
import org.springframework.security.web.SecurityFilterChain;

@Configuration
@EnableWebSecurity
public class SecurityConfig {

	@Bean
	public BCryptPasswordEncoder bCryptPasswordEncoder() {
		return new BCryptPasswordEncoder();
	}
	
	@Bean
	public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
		
		//csrf disable
		http
			.csrf((auth) -> auth.disable());
		
		//Form 로그인 방식 disable
		http
		 	.formLogin((auth) -> auth.disable());
		
		
		//http basic 인증 방식 disable
		http
			.httpBasic(auth -> auth.disable());
		
		//경로별 인가 작업
		http
			.authorizeHttpRequests(auth -> auth
					.requestMatchers("/login", "/" , "/join").permitAll()
					.requestMatchers("/admin").hasRole("ADMIN")
					.anyRequest().authenticated());
		
		//세션 설정
		http
			.sessionManagement(sesstion -> sesstion
					.sessionCreationPolicy(SessionCreationPolicy.STATELESS));
		
		
		return http.build();
	}
}

@Configuration 어노테이션은 이 클래스가 스프링 설정 클래스임을 나타냅니다.
@EnableWebSecurity 어노테이션은 스프링 시큐리티를 활성화하는 역할을 합니다.
BCryptPasswordEncoder 빈을 생성하는 메서드입니다. 이 빈은 비밀번호를 암호화하는데 사용합니다.
SecurityFilterChain빈을 생성하는 메서드입니다. 이 빈은 보안 필더 체인을 구성합니다.

  • csrf 를 비활성화 합니다.
  • Form 로그인 방식을 비활성화 합니다.
  • HTTP Basic 인증 방식을 비활성화 합니다.
  • 특정 경로에 대한 인가 작업을 설정합니다.
  • 세션 관리 정책을 설정합니다.

CSRF

Cross-Site Request Forgery
웹사이트 취약점 공격 기법. 이 공격은 사용자가 자신의 의지와는 무관하게 공격자가 의도한 행위를 특정 웹사이트에 요청하게 하는 것이다.
CSRF 공격을 방지하기 위한 조치입니다. CSRF 공격을 비활성화하면 해당 공격에 취약하지 않도록 보호할 수 있다.
(클라이언트 기반 인증 방식을 사용하는 경우에는 CSRF를 비활성화 할 수 있다.)

CSRF 정의와 XSS와 차이
https://panda-university.tistory.com/19

profile
https://blog.naver.com/jaewoo2_25

0개의 댓글