수색…


소개

Firebase Realtime Database를 사용하면 데이터베이스 규칙이 서버 측 보안이됩니다. 누가 데이터베이스에 액세스 할 수 있는지 매우 신중해야합니다. 어떤 사람도 귀하의 데이터에 액세스하지 못하게하는 것이 중요합니다.

기본적으로 Firebase Realtime Database 규칙은 모든 인증 된 사용자가 모든 데이터를 읽고 쓸 수 있도록 허용합니다. 이는 앱이 원하는 데이터가 아닐 수도 있습니다.

다양한 시나리오에 대해 아래 예제를 살펴보십시오.

비고

Firebase Realtime Database는 자바 스크립트와 유사한 구문을 사용하여 유연한 표현 기반 규칙 언어를 제공하여 데이터 구성 방법, 인덱싱 방법 및 데이터를 읽고 쓸 수있는 시점을 쉽게 정의합니다. Google의 인증 서비스와 결합하여 누가 어떤 데이터에 액세스 할 수 있는지 정의하고 승인되지 않은 액세스로부터 사용자의 개인 정보를 보호 할 수 있습니다.

기본적으로 데이터베이스 규칙에는 Firebase 인증이 필요하며 인증 된 사용자에게만 전체 읽기 및 쓰기 권한을 부여합니다. 기본 규칙을 사용하면 데이터베이스를 구성 할 기회를 가지기 전에 다른 사람이 데이터베이스에 액세스 할 수 없도록 보장합니다.

공식 문서

https://firebase.google.com/docs/database/security/quickstart

규칙을 구성하는 방법

  1. Firebase 콘솔로 이동하십시오.
  2. 프로젝트 선택
  3. 왼쪽에있는 데이터베이스 섹션을 클릭 한 다음 규칙 탭을 선택하십시오.

프로덕션 환경에 적용하기 전에 보안 규칙을 테스트하려면 규칙 편집기의 오른쪽 위에있는 시뮬레이션 단추를 사용하여 콘솔에서 작업을 시뮬레이트 할 수 있습니다.

기본 규칙

기본 규칙에는 인증이 필요합니다.
앱의 인증 된 사용자에게 전체 읽기 및 쓰기 액세스 권한을 허용합니다. 앱의 모든 사용자에게 데이터를 공개하고 싶지만 세상에 공개하지 않으려는 경우 유용합니다.

// These rules require authentication
{
  "rules": {
    ".read": "auth != null",
    ".write": "auth != null"
  }
}

파일을 공개 및 쓰기 가능하게 설정하는 방법

그냥 정의 :

// These rules give anyone, even people who are not users of your app,
// read and write access to your database
{
  "rules": {
    ".read": true,
    ".write": true
  }
}

개발 단계에서는 유용 할 수 있지만이 액세스 수준은 누구나 데이터베이스를 읽거나 쓸 수 있음을 의미하기 때문에주의를 기울여야 합니다 .

읽기 및 쓰기 액세스를 비활성화하는 방법

개인 규칙을 정의하여 사용자가 데이터베이스에 대한 읽기 및 쓰기 액세스를 사용 불가능하게 할 수 있습니다. 이 규칙을 사용하면 관리 권한이있는 경우에만 데이터베이스에 액세스 할 수 있습니다 (Firebase 콘솔을 통해 데이터베이스에 액세스하거나 서버에서 로그인 하여 얻을 수 있음) .

// These rules don't allow anyone read or write access to your database
{
  "rules": {
    ".read": false,
    ".write": false
  }
}

인증 된 사용자에게만 액세스 권한을 부여하는 방법

다음은 인증 된 각 사용자에게 /users/$user_id 개인 노드를 제공하는 규칙의 예입니다. 여기서 $ user_id는 인증을 통해 획득 한 사용자의 ID입니다.

// These rules grant access to a node matching the authenticated
// user's ID from the Firebase auth token
{
  "rules": {
    "users": {
      "$user_id": {
        ".read": "$user_id === auth.uid",
        ".write": "$user_id === auth.uid"
      }
    }
  }
}

그룹에서 특정 항목을 읽는 것을 허용하지만 그룹 회원을 나열하지 못하게하는 방법

항목 ID를 키로 사용하여 간단한 값 노드를 만들어 항목 그룹을 만드는 것이 일반적입니다. 예를 들어, /administrators/$user_id 에 값 true 로 노드를 작성하여 "administrators"그룹에 사용자를 추가 할 수 있습니다. 우리는 보안상의 이유로 누구 관리자인지 알 수 없지만 인증 된 사용자가 관리자 인지 확인하려고합니다. 이러한 규칙으로 우리는 다음과 같이 할 수 있습니다.

{
  "rules": {
    "administrators": {
      // No one can list administrators
      ".read": "false",
      "$uid": {
        // Authenticated user can check if they are in this group
        ".read": "$uid === auth.uid",
        // Administrators can write
        ".write": "data.parent().child(auth.uid).val() === true",
        // Allow only add or delete, no duplicates
        ".validate": "!data.exists() || !newData.exists() || newData.isBoolean()",
      }
    }
  }
}


Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow