스프링 시큐리티 (Spring Security)

헨도·2024년 7월 31일
0

SpringBoot

목록 보기
12/23
post-thumbnail

스프링 시큐리티

  • 스프링 기반의 어플리케이션에서 인증 및 권한 부여 등의 보안 기능을 쉽게 구현하도록 돕는 프레임워크이다.

인증과 인가

인증(Authentication)

  • 사용자가 누구인지 확인하는 과정
    ex) 로그인 과정에서 아이디와 비밀번호로 사용자를 확인하는 것

인가(Authorization)

  • 인증된 사용자가 특정 자원에 접근할 수 있는 권한을 가지고 있는지 확인하는 과정
    ex) 관리자 페이지에는 관리자 권한을 가진 사용자에게 접근을 허가하고, 관리자 권한이 없는 유저는 접근을 제한하는 것

특징

1. 강력한 인증 및 권한 부여

  • 폼 기반 인증은 물론 LDAP, OAuth2 등 외부 시스템을 통한 인증 등 다양한 인증 메커니즘을 지원한다.
  • 사용자의 역할과 권한에 따라 접근 제어를 세밀하게 관리할 수 있다.

2. 양방향 채널 보안

  • 양방향 (서버 -> 클라이언트 / 클라이언트 -> 서버) 데이터 전송 과정에서 양쪽 모두를 보호한다.
  • HTTPS 를 통한 데이터 암호화를 지원하여 데이터 전송 중의 보안을 강화한다.

3. 세션 관리

  • 세션 고정 보호, 세션 만료, 동시 세션 제어 등 세션 관리 기능을 제공하여, 웹 어플리케이션의 보안성을 향상시킨다.
    • 세션 고정 보호
      • 공격자가 세션ID 를 예측하거나 알아내어 사용자의 세션을 가로채는 것을 방지
      • 세션 고정 공격을 막기 위해, 사용자가 로그인 한 후 새로운 세션 ID 를 발급받게 된다.
        ( 기존 세션ID 를 사용하여 사용자의 세션을 고정시키려는 시도를 무력화한다. )
    • 세션 만료
      • 활동이 없는 사용자의 세션을 자동으로 만료시키는 기능이다.
      • 오랜 시간 동안 인증 상태가 유지되어 있어 발생할 수 있는 보안 위험을 줄인다.
        ex) 사용자가 로그아웃 하지 않고 웹 사이트를 떠난 경우, 세션 만료 기능이 자동으로 세션을 종료한다.
    • 동시 세션 제어
      • 한 사용자가 여러 기기나 브라우저에서 동시에 로그인하는 것을 제한한다.
      • 사용자가 의도하지 않은 로그인을 감지할 수 있도록 도와주어 계정 도용이나 비정상적 접근을 방지한다.

CSRF 보호 및 CORS 지원

CSRF (CROSS-Site Request Forgery) 란?

  • 사용자의 권한을 가지고 특정 동작(ex. 비밀번호 변경, 메시지 전송, 금융 거래 등)을 수행하도록 유도하는 공격
    < 사용자가 로그인한 상태에서 공격자가 준비한 악의적인 웹 페이지나 이메일 등을 통해 사용자의 브라우저가 웹 어플리케이션에 요청을 보내도록 유도하여 개인정보 탈취 또는 계정 도용 >

CORS (CROSS-Origin Resource Sharing) 란?

  • 서로 다른 도메인을 가진 웹 어플리케이션 간 리소스를 공유할 수 있게 해주는 기술
  • 웹 브라우저는 보안상의 이유로 일방적으로 동일 출처 정책(Same-Origin Policy)을 적용해, 다른 출처 리소스 요청 제한에 따라서 다른 출처의 리소스에 접근해야 할 경우 CORS 정책 활용
  • CSRF 공격으로부터 어플리케이션을 보호하기 위한 기능 탑재
    • CSRF 토큰 사용: 각 사용자 세션에 대한 고유한 CSRF 토큰 생성
      사용자가 폼을 제출할 때, 서버 측에서 토큰을 검증하여 정상적인 요청인지 확인
profile
Junior Backend Developer

0개의 댓글