반응형

아주 쉬운 말로, **Spring Security(스프링 시큐리티)**를 처음부터 차근차근 설명해볼게요. 이 글은 “보안이 뭔데?” 수준에서 시작해서, 바로 써먹을 수 있는 기본 규칙까지 알려주는 입문용 안내서예요.


1) 스프링 시큐리티는 뭐 하는 친구일까?

스프링 시큐리티는 웹사이트의 문지기예요.

  • 인증(Authentication): “너 누구야?” → 로그인으로 사람 확인
  • 인가(Authorization): “너 뭐까지 해도 돼?” → 권한으로 허용/차단

우리가 정해준 규칙에 따라, 시큐리티는 각 요청을 필터 체인이라는 보안 게이트에서 검사해요. “이 길은 모두 통과!”, “이 길은 회원만!”, “여긴 관리자!” 이렇게 문지기가 길마다 안내하는 느낌이에요.


2) 길을 나누면 쉬워져요 (URL 설계 기본)

처음에는 세 구역만 기억하세요.

  1. 공개 구역: 누구나 볼 수 있는 길 → 예: /, /reservation/**, /css/**
  2. 회원 구역: 로그인한 사람만 → 예: /account/**
  3. 관리자 구역: 관리자만 → 예: /admin/**

규칙 예시(의미만 이해하세요):

  • permitAll() → 모두 통과
  • authenticated() → 로그인 필요
  • hasRole("ADMIN") → 관리자만

3) 정적 파일은 검사하지 않기

이미지, CSS, JS 같은 정적 리소스는 보안 검사가 필요 없어요.
/css/**, /js/**, /img/** 같은 경로는 무시(ignoring) 처리해서, 로그인 없이 바로 보여주면 됩니다.
이걸 깜빡하면, 홈 화면조차 스타일이 깨지거나, 심하면 홈도 로그인 요구가 나올 수 있어요.


4) 로그인/로그아웃 기본 흐름

  • 로그인 페이지를 지정하고(.loginPage(...)),
  • 성공하면 어디로 갈지(예: 홈) 정하고(.defaultSuccessUrl(...)),
  • 실패했을 때 안내 페이지도 준비해요.
    로그아웃도 버튼을 누르면 세션을 정리하고 홈으로 돌아가게 설정해두면 끝!

5) CSRF는 뭐고, 언제 끌까?

CSRF는 “내가 원치 않는데 내 브라우저가 남의 요청을 대신 보내는” 공격을 막는 안전장치예요.

  • 서버 템플릿 폼 전송을 쓰면 켜두는 게 원칙.
  • API 중심 + 프런트 분리라면, 초보 단계에서는 헷갈리지 않도록 일단 끄고(개발 중), 나중에 토큰 방식으로 올바르게 켜기를 추천해요.

6) CORS와 프리플라이트(OPTIONS)

프런트 도메인이 백엔드와 다를 때 브라우저는 “이 사이트에 요청 보내도 돼?” 하고 먼저 OPTIONS(프리플라이트) 요청을 보내요.
서버는 다음을 알려줘야 해요:

  • 허용 출처(Origin): 예) https://carzcars.com
  • 허용 메서드: GET, POST, ...
  • 허용 헤더: Content-Type, Authorization 등
    이게 맞지 않으면 CORS 에러가 나요. 초보자 실수 1위가 바로 허용 도메인 누락이에요.

7) 진짜 자주 하는 실수 BEST 5

  1. 홈(/)과 공개 페이지를 permitAll()에 안 넣어서, 처음부터 로그인 요구
  2. 정적 리소스를 무시하지 않아, 화면이 깨지거나 리소스가 막힘
  3. /admin/** 보호가 약해 관리자 페이지가 열려버림
  4. CORS에서 프런트 도메인 오타/누락
  5. CSRF를 이해 못한 채 켜거나 끄다가 폼/API 오류

8) 처음 시작할 때 최소 가이드

  • 공개: "/", "/reservation/**", "/privacy", "/css/**", "/js/**" → permitAll() 또는 ignoring
  • 회원: "/account/**" → authenticated()
  • 관리자: "/admin/**" → hasRole("ADMIN")
  • 로그인 페이지/성공 경로 확실히 지정
  • 프런트 분리 시 CORS 설정 필수(실제 도메인 정확하게)
  • CSRF는 개발 중엔 단순화, 운영 전에는 제대로 켜기

9) 한 줄 요약

스프링 시큐리티는 문지기예요. “누가, 어디까지 들어갈 수 있는지” 길을 나누고 규칙을 적는 것부터 시작하세요. 공개/회원/관리자 세 구역만 잘 나눠도 80%는 해결됩니다. 여기에 정적 리소스 무시, 로그인/로그아웃 경로, CORS/CSRF 기본만 맞추면, 초보자도 안전하고 편한 첫 보안 설정을 완성할 수 있어요. 💪

반응형

+ Recent posts