Firebase 데이터 수정을 제한하는 방법은 무엇입니까?


93

Firebase는 개발자가 클라이언트 측 코드에 집중할 수 있도록 데이터베이스 백엔드를 제공합니다.

따라서 누군가 내 firebase uri (예 :)를 가져 오면 로컬에서https://firebaseinstance.firebaseio.com 개발 합니다 .

그러면 내 Firebase 인스턴스에서 다른 앱을 만들고 가입하고 자신을 인증하여 내 Firebase 앱의 모든 데이터를 읽을 수 있을까요?

답변:


104

@Frank van Puffelen,

피싱 공격에 대해 언급하셨습니다. 실제로 그것을 보호하는 방법이 있습니다.

googleAPIs API Manager 콘솔에 로그인하면 앱에서 요청을 수락 할 HTTP 리퍼러를 잠글 수있는 옵션이 있습니다.

  1. https://console.developers.google.com/apis를 방문 하십시오.
  2. Firebase 프로젝트로 이동
  3. 자격 증명으로 이동
  4. API 키에서 Firebase 프로젝트와 연결된 브라우저 키를 선택합니다 (Firebase 앱을 초기화하는 데 사용하는 API 키와 동일한 키가 있어야 함).
  5. '이 HTTP 리퍼러 (웹 사이트)의 요청 수락'에서 앱의 URL을 추가하기 만하면됩니다.

이렇게하면 허용 된 도메인에서만 앱을 사용할 수 있습니다.

https://firebase.google.com/support/guides/launch-checklist 의 firebase 시작 체크리스트에도 설명되어 있습니다.

아마도 firebase 문서는 이것을 더 잘 보이게 만들거나 기본적으로 도메인을 자동으로 잠그고 사용자가 액세스를 허용하도록 요구할 수 있습니까?


2
Google API 콘솔로 이동할 때 HTTP 리퍼러를 잠그는 옵션이 표시되지 않습니다. 스크린 샷이 도움이 될 것입니다. thx
rattanak aug

위의 단계를 수행해 보셨습니까? 바로 거기로 가야합니다. 보안상의 이유로 스크린 캡을 사용하지 않을 것입니다. 브라우저 키를 찾아야합니다. 행운을 빌어 요.
prufrofro

4
ionic과 같은 프레임 워크를 사용하여 하이브리드 모바일 앱과 함께 firebase를 사용할 때 화이트리스트는 어떻게 작동 할 수 있습니까? 어떤 제안?
Dinana

1
@prufrofro 잘 작동합니까? Android 앱에서도 똑같은 일을 할 생각이었습니다. 보안 섹션에서 Firebase가 왜이를 다루지 않는지 궁금합니다.
steliosf

2
@Anand 예,하지만 Firebase는 문서에서이를 다루지 않습니다. 기본적으로 키는 공개되며 특정 패키지 이름 및 SHA-1 앱 인증서에서만 사용하도록 수동으로 제한해야합니다. 그리고 Firebase가 왜 이것을 전혀 언급하지 않는지 궁금합니다. 캐치 또는 뭔가 있나요?
steliosf

38

누군가가 귀하의 URL을 알고 있다는 사실은 보안 위험이 아닙니다.

예 : 제 은행이 bankofamerica.com에서 웹 사이트를 호스팅하고 HTTP 프로토콜을 사용한다고 말하는 데 아무런 문제가 없습니다. 내가 해당 사이트에 액세스하는 데 사용하는 자격 증명을 모르는 경우 URL을 아는 것은 아무런 소용이 없습니다.

데이터를 보호하려면 다음과 같이 데이터베이스를 보호해야합니다.

  • 모든 데이터가 원하는 구조를 준수하는지 확인하는 유효성 검사 규칙
  • 각 데이터 비트가 권한이있는 사용자 만 읽고 수정할 수 있도록하는 권한 부여 규칙

이 모든 내용 은 보안 및 규칙 에 대한 Firebase 문서에서 다룹니다 .

이러한 보안 규칙을 적용하면 다른 사람의 앱이 데이터베이스의 데이터에 액세스 할 수있는 유일한 방법은 사용자가 애플리케이션의 기능을 복사하고 사용자가 자신의 앱에 로그인 한 후 로그인 / 읽기 / 쓰기하는 것입니다. 귀하의 데이터베이스 본질적으로 피싱 공격입니다. 이 경우 데이터베이스에 보안 문제가 없지만 일부 권한이 관련 될 시간 일 것입니다.


4
내가 찾고있는 답이 아닙니다. 다른 방식으로 물어 보겠습니다. 이 URL을 내 firebase https://tinderclone.firebaseio.com/https://tinderclone.firebaseio.com/profiles.json. 그들은 실제 firebase 데이터베이스입니다. 앱을 개발하여 이메일로 가입 양식과 로그인 양식을 만들 수 있습니까? 내 앱을 사용하면 누구나 이메일로 등록 할 수 있으므로 등록한 후에 모든 데이터를 읽을 수 있습니까? 나중에 다른 질문을하겠습니다. 감사합니다
rattanak

4
그것은 데이터베이스 보안 방법에 따라 다릅니다. 단순히 추가 ".read": false하면 누구도 데이터를 볼 수 없습니다. 그보다 더 많은 것을 허용하고 싶을 수도 있지만 모두 사용 사례에 따라 다릅니다. 데이터 보안은 보안 및 규칙 에 대한 Firebase 문서에서 다룹니다 .
Frank van Puffelen 2016

6

도메인 이름이 적용되지 않는 모바일 앱의 인증 허용 목록과 관련하여 Firebase는

1) SHA1 fingerprint에 대한이 안드로이드 앱

2) App Store ID and Bundle ID and Team ID (if necessary)당신을위한 iOS 앱

Firebase 콘솔에서 구성해야합니다.

이 보호 기능 검증이되지 않기 때문에, 누군가가 등 유효한 API 키 인증 도메인을 가지고 만있는 경우뿐만 아니라, 그것은 우리의 권한이 애플 리케이션에서 오는 것입니다 domain name/HTTP referrer in case .

이러한 API 키 및 기타 연결 매개 변수가 다른 사용자에게 노출 되어도 걱정할 필요가 없다고 말했습니다.

자세한 내용은 https://firebase.google.com/support/guides/launch-checklist를 참조하세요.


내 무지를 용서하십시오. 저는 암호화에 능숙하지 않지만 APK를 통해 Sha1에 액세스 할 수 없습니까? 사람들은 Sha1도 복사 할 수 없습니까? 이것이 어떻게 도움이되는지 모르겠습니다. 나는 그렇지 않다면 증명 될 수있어서 매우 기쁠 것이다. :)
cs guy

예. 확실히 apk의 sha1을 얻을 수 있습니다. 그러나 그것은 호출의 유효성을 검사하기 위해 firebase에 매개 변수로 전달하는 것이 아닙니다. firebase가 api-sdk 수준에서 가져옵니다 (안드로이드 런타임에서 믿음). 따라서 연결을 위조하는 매개 변수로 이것을 firebase에 보낼 수 없습니다.
Anand

SHA1 지문 만 사용한다고해서 Firebase와의 Android 앱 통신을 보호하는 데 도움이되지는 않습니다. SHA1 자체는 쉽게 얻고 복사 할 수 있으며 SDK 대신 Firebase API를 사용하여 연결을 위조 할 수 있습니다. 먼저 앱을 증명하고 일부 코드 난독 화를 사용하여 키를 숨겨야합니다.
FEBRYAN ASA PERDANA
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.