Spring Boot Starter Security


복사해서
build.gradle에 security 추가

프로젝트 다시로드.

localhost:8080 실행하면 이렇게 뜬다.


스프링 부트 프로젝트에 시큐리티 디펜던시를 추가하면 아무런 설정이 안되어 있어도 프로젝트가 시큐리티 적용이 된다.
프로젝트를 실행하고 접속해보면 로그인 창이 뜬다.
기본 아이디 user
기본 비밀번호 터미널에서 찾을 수 있다.

로그인하면 만들어두었던 로그인 화면이 나온다.
시큐리티에서 제공하는 로그인은 프로젝트의 로그인과 별도이다.

원래있던 아이디, 비밀번호도 로그인이 안되었다.
회원가입을 새로하려고 해도 회원가입이 안됨.
프로젝트의 세션과 시큐리티의 세션 저장위치가 다르다.
CSRF
Cross-Site Request Forgery
사이트 간 요청 위조의 줄임말.
웹 애플리케이션 취약점 중 하나. 사용자가 자신의 의지와 무관하게 공격자가 의도한 행동을 해서 특정 웹페이지를 보안에 취약하게 한다거나 수정, 삭제 드의 작업을 하게 만드는 공격 방법이다.

config (설정) 파일
Spring Security는 기본적으로 csrf 옵션을 제공한다. 사용하고 싶지않다면 disable 해줘야 함.
@Configuration // config파일에 붙여줌.
@EnableWebSecurity // 시큐리티 적용한다는 뜻.
public class SecurityConfig {
@Bean
public SecurityFilterChain securityFilterChain(HttpSecurity httpSecurity) throws Exception {
httpSecurity.csrf(
config -> config.disable()
);
return httpSecurity.getOrBuild();
}
}
bean으로 시큐리티 필터체인을 만들어주면 기존에 자동 생성되었던 시큐리티 필터체인이 작동되지 않고 개발자가 만든 시큐리티 필터체인이 적용된다.

서버 csrf 토큰을 만들어서 페이지에 넣어줌
페이지에서 어떤 요청을 할 때 해당토큰이 없으면 비정상 요청이라고 판단.



토큰을 넣어줘야 한다.



