Cloud Firestore 사용해 보기: Firebase와 Google Cloud Platform의 유연하며 확장 가능한 데이터베이스를 살펴보세요. Cloud Firestore 자세히 알아보기

보안 위험 해결

Firebase 실시간 데이터베이스가 안전하지 않다는 알림을 받은 경우 Firebase 데이터베이스 규칙을 수정하고 테스트하여 이러한 보안 위험을 해결할 수 있습니다. 이 가이드를 따라 Firebase 데이터베이스 규칙을 확인하고 잠재적인 보안 위험을 이해하며 Firebase 데이터베이스 규칙을 배포하기 전에 변경사항을 테스트합니다.

Firebase 데이터베이스 규칙 검토

기존 Firebase 데이터베이스 규칙을 보려면 Firebase 콘솔의 규칙 탭으로 이동합니다.

Firebase 데이터베이스 규칙 이해

Firebase 데이터베이스 규칙은 사용자 데이터를 악의적인 사용자로부터 보호하기 위해 있습니다. 모든 사용자에게 읽기 및 쓰기 액세스를 허용하는 공개 규칙으로 개발을 시작하는 것이 일반적이지만 앱을 배포하기 전에 데이터를 보호하는 규칙을 구성해야 합니다. 규칙을 구성할 때 시뮬레이터를 사용하여 규칙을 다양하게 테스트합니다.

Firebase 데이터베이스 규칙이 처음이라면 데이터베이스 규칙 시작하기에서 규칙의 실행 방식에 대해 자세히 알아보세요.

일반적인 보안 위험 해결

기본값으로 설정하거나 실시간 데이터베이스를 사용하여 앱을 처음에 개발할 때 설정한 Firebase 데이터베이스 규칙은 배포된 앱에 적합하지 않을 수 있습니다. 다음과 같은 일반적인 맹점과 잠재적인 해결 방법을 살펴봅니다.

오픈 액세스

실시간 데이터베이스를 설정할 때 개발 중에 오픈 액세스를 허용하도록 규칙을 설정했을 수 있습니다. 앱을 개발한 사용자가 데이터베이스에 액세스할 수 있는 유일한 사용자인 경우에는 이렇게 규칙을 설정해도 보안 문제가 없을 수 있지만 앱을 배포하고 사용자를 인증하지 않은 경우에는 데이터가 악의적인 사용자에게 노출될 수 있습니다.

권장하지 않음: 모든 사용자에 대한 읽기 및 쓰기 액세스 권한

{
  "rules": {
    ".read": true,
    ".write": true
  }
}
솔루션: 읽기 및 쓰기 액세스 권한을 제한하는 규칙 데이터 계층구조에 적합한 규칙을 작성합니다. 이 보안 위험을 해결하는 일반적인 솔루션에는 Firebase 인증을 사용하는 사용자 기반 보안이 있습니다. 사용자 기반 보안에서 자세히 알아보세요.

인증된 사용자 액세스

Firebase 데이터베이스 규칙은 사용자가 로그인했는지 확인하지만 해당 인증을 기반으로 한 액세스를 더 이상 제한하지 않는 경우가 있습니다. 규칙 중 하나에 auth !== null이 포함된 경우 로그인한 모든 사용자에게 데이터에 액세스할 수 있는 권한을 부여할지를 확인합니다.

권장하지 않음: 로그인한 모든 사용자에게 전체 데이터베이스에 대한 읽기 및 쓰기 권한 부여

{
  "rules": {
      // any logged-in user access your data
      ".read": "auth !== null",
      ".write": "auth !== null"
   }
}
솔루션: auth 변수를 사용하여 액세스를 제한합니다. 인증을 확인할 때 인증 속성 중 하나를 사용하여 특정 데이터 세트에 대한 특정 사용자의 액세스를 추가로 제한할 수도 있습니다. 사용자 기반 보안에서 auth 변수에 대해 자세히 알아보세요.

잘못 상속된 규칙

Firebase 데이터베이스 규칙은 보다 얕은 상위 경로의 규칙이 하위로 전파되어 보다 세부적인 하위 노드의 규칙을 재정의합니다. 하위 노드에서 규칙을 작성할 때는 추가 권한만 부여할 수 있습니다. 데이터베이스에서 세부 경로에 있는 데이터에 대한 액세스를 세분화하거나 취소할 수 없습니다.

권장하지 않음: 하위 경로에서 규칙 세분화

{
  "rules": {
     "foo": {
        // allows read to /foo/*
        ".read": "data.child('baz').val() === true",
        "bar": {
          /* ignored, since read was allowed already */
          ".read": false
        }
     }
  }
}
솔루션: 상위 경로에서 포괄적인 규칙을 작성하고 하위 경로에서 세세한 권한 부여 데이터 액세스를 보다 세분화해야 하는 경우 규칙을 세분화합니다. 데이터 보안에서 Firebase 데이터베이스 규칙 하위 전파에 대해 자세히 알아보세요.

차단된 액세스

앱을 개발할 때 또 다른 일반적인 방식은 데이터베이스를 잠긴 상태로 유지하는 것입니다. 일반적으로 다음과 같이 모든 사용자에 대한 읽기 및 쓰기 액세스 권한을 차단하는 것을 의미합니다.

{
  "rules": {
    ".read": false,
    ".write": false
  }
}

이렇게 하면 보안 위험은 없지만 앱을 출시할 때 문제가 발생할 수도 있습니다. Firebase 데이터베이스 규칙 구성 및 배포에 대해 자세히 알아보세요.

Firebase 데이터베이스 규칙 테스트

업데이트된 Firebase 데이터베이스 규칙을 테스트하려면 Firebase 콘솔에서 시뮬레이터 도구를 사용합니다.

  1. 시뮬레이터를 열려면 규칙 탭에서 시뮬레이터를 클릭합니다.
  2. 시뮬레이터 설정에서 다음을 포함하여 테스트 옵션을 선택합니다.
    • 읽기 또는 쓰기 테스트
    • 데이터베이스의 특정 위치(경로)
    • 인증 유형 — 인증되지 않은 사용자, 인증된 익명 사용자 또는 특정 사용자 ID
  3. 실행을 클릭하고 규칙 창 위의 배너에서 결과를 찾습니다.

다음에 대한 의견 보내기...

Firebase 실시간 데이터베이스
도움이 필요하시나요? 지원 페이지를 방문하세요.