Language (102) 썸네일형 리스트형 CSRF 토큰 유지 및 검증 CSRF 토큰 유지 - CsrfTokenRepositoryCsrfToken은 CsrfTokenRepository를 사용하여 영속화 하며, 구현체인 HttpSessionCsrfTokenRepository와 CookieCsrfTokenRepository를 지원두 군데 중 원하는 위치에 토큰을 저장하도록 설정을 통해 지정 가능세션에 토큰 저장 - HttpSessionCsrfTokenRepository@BeanSecurityFilterChain defaultSecurityFilterChain(HttpSecurity http) throws Exception { HttpSessionCsrfTokenRepository repository = new HttpSessionCsrfTokenRepository(); .. CSRF (Cross Site Request Forgery, 사이트 간 요청 위조) CSRF (Cross Site Request Forgery, 사이트 간 요청 위조)웹 애플리케이션의 보안 취약점으로 공격자가 사용자로 하여금 이미 인증된 다른 사이트에 대해 원치 않는 작업을 수행하게 만드는 기법을 의미이 공격은 사용자의 브라우저가 자동으로 보낼 수 있는 인증 정보, 예를 들어 쿠키나 기본 인증 세션을 이용하여 사용자가 의도하지 않은 요청을 서버로 전송하게 만듦이는 사용자가 로그인한 상태에서 악의적인 웹사이트를 방문하거나 이메일 등을 통해 악의적인 링크를 클릭할 때 발생 가능 CSRF 진행 순서 CSRF 기능 활성화CSRF 기능 활성화 → 별도 설정하지 않아도 활성화 상태로 초기화@Beanpublic SecurityFilterChain securityFilterChain(HttpSecur.. CORS (Cross Origin Resource Sharing, 교차 출처 리소스 공유) 웹에서는 보안을 위해 기본적으로 한 웹 페이지(출처 A)에서 다른 웹 페이지(출처 B)의 데이터를 직접 불러오는 것을 제한하는데 이를 '동일 출처 정책(Same-Origin Policy)'만약 다른 출처의 리소스를 안전하게 사용하고자 할 경우 CORS 가 등장하며 CORS는 특별한 HTTP 헤더를 통해 한 웹 페이지가 다른 출처의 리소스에 접근할 수 있도록 '허가'를 구하는 방법이라 할 수 있음 → 즉, 웹 애플리케이션이 다른 출처의 데이터를 사용하고자 할 때 브라우저가 그 요청을 대신해서 해당 데이터를 사용해도 되는지 다른 출처에게 물어보는 것출처를 비교하는 로직은 서버에 구현된 스펙이 아닌 브라우저에 구현된 스펙 기준으로 처리되며 브라우저는 클라이언트의 요청 헤더(A출처)와 서버의 응답 헤더(B출처).. 예외 필터 - ExceptionTranslationFilter() 예외 처리 흐름도인증 받지 못한 사용자가 /user URL 요청→ /user URL은 인증이 필요가장 마지막의 인가 필터(AuthorizationFilter)가 받음AuthorizationManager를 통해 사용자의 접근 여부를 판단하고 최종 반환 받은 값으로 해당 유저는 접근할 수 없다고 판단 → 인가 예외(AccessDeniedException) 발생ExceptionTranslationFilter가 받음 → 해당 필터는 인증 예외, 인가 예외 두 가지를 처리할 수 있지만 지금 받은 것은 인가 예외AccessDeniedException에서 익명 사용자 또는 RememberMe(기억하기 인증) 사용자라면 인증 예외(AuthenticationException)으로 전달 → 아이디, 패스워드를 입력한 사용.. 예외 처리 - ExceptionHandling() 예외 처리는 필터 체인 내에서 발생하는 예외를 의미크게 인증예외(AuthenticationException)와 인가예외(AccessDeniedException)로 나뉨예외를 처리하는 필터로서 ExceptionTranslationFilter가 사용 되며 사용자의 인증 및 인가 상태에 따라 [로그인 재시도 / 401 / 403] 코드 등으로 응답 가능예외 처리 유형AuthenticationException(인증 예외)SecurityContext 에서 인증 정보 삭제기존의 Authentication이 더 이상 유효하지 않다고 판단하고 Authentication을 초기화AuthenticationEntryPoint 호출AuthenticationException이 감지되면 필터는 authenticationEntry.. SessionManagementFilter / ConcurrentSessionFilter SessionManagementFilter요청이 시작된 이후 사용자가 인증되었는지 감지하고, 인증된 경우에는 세션 고정 보호 메커니즘을 활성화하거나 동시 다중 로그인을 확인하는 등 세션 관련 활동을 수행하기 위해 설정된 세션 인증 전략(SessionAuthenticationStrategy)을 호출하는 필터 클래스스프링 시큐리티 6 이상에서는 SessionManagementFilter가 기본적으로 설정 되지 않으며 세션관리 API 를 설정을 통해 생성 가능→ SessionManagement API를 추가해야 SessionManagementFilter가 추가ChangeSessionIdAuthenticationStrategy : 세션 고정 보호 → 세션 고정 공격 방지ConcurrentSessionContro.. 세션 생성 정책 - sessionManagement().sessionCreationPolicy() 개요스프링 시큐리티에서는 인증된 사용자에 대한 세션 생성 정책을 설정하여 어떻게 세션을 관리할지 결정 가능 → 이 정책은 SessionCreationPolicy로 설정 세션 생성 정책 전략SessionCreationPolicy.ALWAYS인증 여부에 상관없이(익명 사용자) 항상 세션을 생성ForceEagerSessionCreationFilter 클래스를 추가 구성 → 세션을 강제로 생성SessionCreationPolicy.NEVER스프링 시큐리티가 세션을 생성하지 않지만 애플리케이션이 이미 생성한 세션은 사용 가능 → 이미 생성한 세션 = WAS(Tomcat)SessionCreationPolicy.IF_REQUIRED (기본값)필요한 경우에만 세션을 생성예를 들어 인증이 필요한 자원에 접근할 때 세션을.. 세션 고정 보호 - sessionManagement().sessionFixation() 세션 고정 보호 전략세션 고정 공격은 악의적인 공격자가 사이트에 접근하여 세션을 생성한 다음 다른 사용자가 같은 세션으로 로그인하도록 유도하는 위험을 의미스프링 시큐리티는 사용자가 로그인할 때 새로운 세션을 생성하거나 세션 ID를 변경함으로써 이러한 공격에 자동으로 대응 세션 고정 공격 사용자가 공격자의 쿠키를 받은 채로 로그인을 하게 되면 공격자가 사용자의 모든 권한과 정보를 다 볼 수 있게 됨sessionManagement() API 세션 고정 보호@Beanpublic SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception { http.sessionManagement(session -> session .. 이전 1 ··· 7 8 9 10 11 12 13 다음 목록 더보기