커스텀 로그인 URL과 데이터베이스 접두사 변경으로 공격 경로 차단하기

커스텀 로그인 URL 설정과 데이터베이스 접두사 변경은 공격 경로를 차단하는 효과적인 방법입니다.

  1. 커스텀 로그인 URL 설정
    스프링 시큐리티(Spring Security)에서는 기본 로그인 처리 URL(/login)을 .loginProcessingUrl() 메서드를 통해 변경할 수 있습니다. 예를 들어, 로그인 요청을 /custom-login으로 변경하면 공격자가 기본 로그인 URL을 노려 공격하는 것을 어렵게 만듭니다. 또한, .loginPage()로 커스텀 로그인 페이지 URL을 지정하여 기본 로그인 폼 대신 자신만의 로그인 화면을 제공할 수 있습니다.

    http.formLogin()
        .loginPage("/custom-login-page")       // 커스텀 로그인 페이지 URL
        .loginProcessingUrl("/custom-login");  // 로그인 처리 URL 변경
    

    이 방법은 공격자가 흔히 사용하는 기본 로그인 경로를 알기 어렵게 만들어 무차별 대입 공격 등을 방지하는 데 도움을 줍니다.

  2. 데이터베이스 접두사 변경
    데이터베이스 테이블 접두사(prefix)를 변경하는 것은 SQL 인젝션 공격이나 자동화된 공격 스크립트가 기본 테이블명을 노리는 것을 방지하는 데 유용합니다. 예를 들어, 기본 테이블명이 users라면 이를 app_userscustom_users 등으로 변경하여 공격자가 데이터베이스 구조를 쉽게 추측하지 못하도록 합니다.
    이 방법은 직접적인 보안 기능이라기보다는 보안 강화의 일환으로, 공격자가 시스템 내부 구조를 파악하는 데 어려움을 주어 공격 경로를 차단하는 효과가 있습니다.


추가 설명

  • 커스텀 로그인 URL 설정 시 고려사항

    • 로그인 URL을 변경해도 로그인 폼의 action 속성도 반드시 일치시켜야 합니다.
    • 로그인 성공/실패 핸들러를 커스텀하여 세밀한 제어가 가능합니다.
    • JWT 인증 등 토큰 기반 인증과 병행할 경우, URL별 필터 체인 분리도 가능합니다.
  • 데이터베이스 접두사 변경 방법

    • ORM 설정이나 직접 SQL 스크립트에서 테이블명을 변경합니다.
    • 기존 테이블명을 변경할 경우, 마이그레이션과 연동 코드 수정이 필요합니다.
    • 보안 목적 외에도 여러 프로젝트에서 테이블명 충돌 방지용으로도 사용됩니다.
  • 보안 강화 효과

    • 기본 경로 및 테이블명을 숨김으로써 공격자가 시스템 구조를 쉽게 파악하지 못하게 하여 공격 성공률을 낮춥니다.
    • 그러나 이것만으로 완전한 보안을 보장하지 않으며, 반드시 인증, 권한 관리, 입력 검증, 암호화 등 다층 보안 전략과 함께 사용해야 합니다.

요약하면, 스프링 시큐리티에서 .loginProcessingUrl().loginPage()를 활용해 로그인 URL을 커스텀하고, 데이터베이스 테이블 접두사를 변경하는 것은 공격자가 흔히 노리는 기본 경로와 구조를 숨겨 공격 경로를 차단하는 데 효과적입니다.

인터넷에서 가져온 이미지

이것도 좋아하실 수 있어요