본문 바로가기

Spring Boot

(174)
세션 기반 사용자 인가 구현 : URL 패턴 기반 인가 설정 - URL 패턴 기반 인가(Authorization) 개념 - HttpSecurity.authorizeRequests() 메서드를 활용한 권한 설정 방법 - requestMatchers(), hasRole(), hasAuthority(), access() 메서드의 차이 - 권한 계층 구조(Role Hierarchy) 를 설정하여 실무에서 효율적으로 권한 관리하기 - 예제와 다이어그램을 통해 인가 흐름 이해하기URL 패턴 기반 인가 설정하기세션 기반 인증이 완료된 후, 사용자가 특정 URL 에 접근할 수 있는지에 대한 것을URL 패턴 기반 인가 설정을 통해 제어할 수 있다Security 에서는 HttpSecurity 의 authorizeHttpRequests() 메서드를 사용하여 URL 별 접근 권한을 설..
세션 기반 사용자 인가 구현 : 인증과 인가의 관계 - 세션 기반 인가(Authorization) 의 기본 개념 - 인증(Authentication), 인가(Authorization) 의 차이 - Spring Security 의 SecurityContext 와 Authentication 객체 구조 - GrantedAuthority 를 활용해서 권한 정보를 표현하는 법 - 세션에 저장된 권한 정보를 통해 접근 제어가 이뤄지는 과정세션 기반 인가 개요웹 애플리케이션에서 인가(Authorization) 이란, 사용자가 특정 리소스나 기능에 접근할 수 있는지를 결정하는 과정을 말한다세션 기반 인증이 완료되면, 서버는 세션(session) 안에 사용자의 정보를 저장한다이후 사용자의 모든 요청은 세션에 담긴 정보를 통해 인가 과정을 거친다인증과 인가의 관계1. 인증..
Remember-Me : 보안 - 자동 로그인(Remember-Me) 기능이 가지는 보안 위험성 - XSS 공격과 쿠키 탈취 공격의 원리, 방지 방법 - Remember-Me 인증시 민감한 기능에는 재인증을 요구해야하는 이유 - 실무에서 Remember-Me 보안 강화를 위한 패턴 및 전략Remember-Me 와 보안 위험성Remember-Me 인증은 편리하지만, 잘못 구현하면 심각한 보안 취약점을 만들 수 있다특히 사용자의 브라우저에 쿠키를 저장하기 때문에, 쿠키 탈취 공격에 노출될 수 있다 1. 자동 로그인과 공격 시나리오 사용자가 단순히 자동 로그인을 켜뒀을 뿐인데, 쿠키 탈취만으로 계정이 완전히 노출될 수 있다 2. 보안 위험위험 요소설명쿠키 탈취브라우저 쿠키를 훔쳐내면, 해커가 그대로 자동 로그인 가능세션 고정 공격해커가 ..
Remember-Me : 설정 - Spring Serurity Remember-Me 설정법 - 기본 구성 요소(rememberMe(), 쿠키 이름, 만료 시간, 키) 설정하기 - 사용자 데이터베이스와 연동하여 Remember-Me 인증 적용하기 - 영구 토큰 저장소를 활용하는 방법 - 토큰 검증 로직 커스터마이징Remember-Me 기본 설정하기Spring Security 에서 HttpSecurity.rememberme() 메서드로 손쉽게 설정할 수 있음이 기능을 통해 사용자가 로그인할 때 remember-me 옵션을 선택하면, 브라우저를 닫아도 일정 기간 자동 로그인이 유지됨 1. 기본 구성 요소옵션설명rememberMeParameter로그인 폼에서 전달되는 파라미터 이름(기본값 : remember-me)rememberMeCooki..
Remember-Me : 구현 방식 - Remember-Me 인증의 필요성, 개념 - 쿠키 기반 토큰 방식의 구조와 동작 원리 - 쿠키 기반 방식에서 비밀번호 변경시 왜 쿠키가 무효화되는가? - 데이터베이스 기반 영구 토큰 방식의 구조, 동작 원리 - 영구 토큰 기반에서 series 와 token의 역할을 구분해서 이해하기 - 두 방식의 차이점과 장단점을 보안, 성능 관점에서 비교하기 - 실제 구현 흐름을 다이어그램과 예제로 이해하기Remember-Me자동 로그인(자동 인증)은 사용자가 브라우저를 닫았다가 다시 접속해도 로그인 상태를 유지할 수 있게 해준다Security 에서는 이를 Remember-Me 인증(Remember-Me Authentication) 으로 부른다사용자 측면에서는 유용하지만, 보안적 위험성을 수반하기 때문에 내부 동..
Remember-me : 인증 개념과 필요성 - Remember-Me의 기본 개념 - 자동 로그인 기능이 사용자 경험에 어떤 영향을 주는다 - 보안과 편의성 사이에서 발생하는 균형 문제 - Remember-Me 기능이 어떤 원리로 동작하는가 - 실제 서비스에서 Remember-Me 기능이 왜 필요한가Remember-Me 인증의 개념, 필요성1. Remember-Me? Remember-Me 인증은 사용자가 로그인할 때 "자동 로그인" 옵션을 선택하면,이후 브라우저를 닫았다가 다시 열어도 로그인 상태를 유지하게 해주는 기능임주로 쿠키(cookie)를 활용하여 사용자 인증 정보를 저장하고, 서버에서 이를 확인하여 다시 인증 과정을 거치지 않고 바로 접근할 수 있도록 함즉, 사용자가 매번 아이디와 비밀번호를 입력하지 않아도 되는 편의성을 제공함 2. 자..
동시 세션 제어와 세선 고정 보호 : 세션 고정 보호 세션 고정 공격으로부터 Security 설정을 통해 보호하기 - 세션 고정(Session Fixation) 공격의 개념, 위험성 - 공격 시나리오를 통해 왜 방어가 필요한지 알기 - Spring Security 에서 제공하는 세션 고정 보호 전략 이해하기 - 각 전략(none, newSession, migrateSession, changeSessionId) 의 차이와 적합한 사용 시점 알기 - 설정법, 실제 동작 결과 확인하기세션 고정 공격(Session Fixation)의 이해1. 개념공격자가 미리 발급받은 세션 ID를 피해자에게 강제로 사용하게 한 뒤, 해당 세션을 탈취하는 공격 기법즉, 피해자가 정상적으로 로그인하더라도 이미 공격자가 알고 있는 세션 ID가 그대로 유지된다면 공격자는 세션을 가로챌..
동시 세션 제어와 세션 고정 보호 : 동시 세션 제어 - 동시 세션 제어의 개념, 필요성 - Spring Security에서 제공하는 동시 세션 제어 기능 - maximumSessions() 와 maxSessionsPreventsLogin() 설정의 차이 - 세션 만료 전략(이전 세션 만료 vs 새 로그인 차단)을 비교하기 - 직접 동시 세션 제어 설정을 적용하고 테스트하기동시 세션 제어웹 애플리케이션은 기본적으로 하나의 계정으로 여러 기기나 브라우저에 동시에 접속할 수 있다하지만, 보안상 또는 비즈니스 정책상 이를 제한할 필요가 있다 은행, 금융 서비스 - > 하나의 계정이 여러곳에서 동시에 로그인하면 위험함온라인 시험 시스템 - > 하나의 계정이 여러 기기에서 동시 시험 응시 불가따라서, 동일 사용자의 동시 세션수를 제어하는 기능이 필요하다 1. 동시..