- 앱의 보안성을 강조하기 위한 서비스 입니다. 앱의 무단 접근, 자동화 봇 등에 의한 보안 위협으로부터 앱을 보호하면, 신뢰할 수 있는 사용자만이 앱에 액세스 할 수 있도록 보장합니다.
- Firebase App Check는 클라이언트-서버 인증 방식을 사용하여 동작합니다. 앱 클라이언트는 인증된 앱으로 등록되어 있는지 확인하기 위해 Firebase App Check SDK를 사용하여 앱 서버에 요청을 보내고, 서버는 이 요청에 대해 Firebase App Check API를 사용하여 요청을 검증합니다. 이를 통해 클라이어트가 신뢰할 수 있는 Firebase 프로젝트에 속하는 앱인지 확인하고, 무단 액세스를 차단할 수 있습니다.
2. Flutter에 적용하기
Firebase Console에서 Firebase 프로젝트를 생성하고, 해당 프로젝트에 Firebase App Check를 활성화합니다.
Flutter 프로젝트의 pubspec.yaml 파일에 Firebase App Check Flutter 패키지를 추가합니다.
dependencies:
firebase_app_check: ^0.7.0
Flutter 프로젝트의 main.dart 파일에 Firebase App Check를 구성합니다.
flutter에서 클래스 내부에 선언된 변수와 메소드를 의미하며 클래스 멤버는 다음과 같이 분류됩니다.
인스턴스 변수 (Instance Variables) : 객체의 인스턴스에 속한 변수로, 객체를 생성할 때 초기화되며, 객체의 속성이나 상태를 나타냅니다.
정적 변수 (Static Variables) : 클래스에 속한 변수로, 클래스를 로드할 때 초기화되며, 클래스와 관련된 정보를 나타냅니다.
인스턴스 메소드 (Instance Methods) : 객체의 인스턴스에 속한 메소드로, 객체를 통해 호출됩니다. 객체의 속성이나 상태를 조작하거나, 객체와 관련된 행동을 나타냅니다.
정적 메소드 (Static Methods) : 클래스에 속한 메소드로, 클래스를 통해 호출됩니다. 클래스와 관련된 행동을 나타냅니다.
다음은 간단한 Flutter 클래스의 예시입니다.
class Person {
String name;
int age;
Person(this.name, this.age);
void sayHello() {
print("Hello, my name is $name and I am $age years old.");
}
static String hello() {
return "Hello from Person class!";
}
}
위의 코드와 같이 where조건과 orderBy를 진행했으나 원하는 결과가 아닌 오류가 발생하였다.
Failed assertion: line 487 pos 13: 'conditionField == orders[0][0]':
The initial orderBy() field "[[FieldPath([productName]), true]][0][0]"
has to be the same as the where() field parameter "FieldPath([regTime])"
when an inequality operator is invoked.
where절에 사용한 parameter와 뒤에 이어지는 orderBy가 같아야 한다는 의미 메시지를 던져주게 된다.
결과적으로 where와 orderBy를 같이 사용할때는 where절에 사용한 필드에 대한 orderBy가 바로 뒤에 따라오고 그 다음에 원하는 orderBy를 사용해야만 한다.
터미널을 통해 SSH 접속 시 "Host key verification failed" 오류가 발생하는 이유는 클라이언트가 접속하려는 서버의 호스트 키를 검증할 수 없기 때문입니다.
터미널에 아래와 같은 메시지가 보여지게 됩니다.
ssh -i rsa_4096 id@127.0.0.4
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that a host key has just been changed.
The fingerprint for the ED25519 key sent by the remote host is
SHA256:
Please contact your system administrator.
Add correct host key in /Users/hajinho/.ssh/known_hosts to get rid of this message.
Offending ECDSA key in /Users/hajinho/.ssh/known_hosts:26
Host key for 127.0.0.4 has changed and you have requested strict checking.
Host key verification failed.
이 오류는 여러 가지 이유로 발생할 수 있습니다. 다음은 그 이유와 해결 방법입니다.
1. 서버의 호스트 키가 변경된 경우
서버의 호스트 키가 변경되면 클라이언트의 ~/.ssh/known_hosts 파일에 저장된 키와 일치하지 않기 때문에 오류가 발생합니다. 서버가 재설치되거나 SSH 설정이 변경되면 호스트 키가 변경될 수 있습니다.
해결 방법: 기존의 호스트 키를 삭제하고 새로운 호스트 키를 추가합니다.
ssh-keygen -R [hostname or IP address]
ssh [hostname or IP address]
2. 서버의 IP 주소가 변경된 경우
서버의 IP 주소가 변경되었지만 호스트 이름은 변경되지 않은 경우에도 호스트 키 검증 오류가 발생할 수 있습니다. 클라이언트는 호스트 이름과 연결된 이전 IP 주소의 호스트 키를 기억하고 있기 때문입니다.
해결 방법: ~/.ssh/known_hosts 파일에서 해당 서버의 이전 엔트리를 삭제합니다.
ssh-keygen -R [hostname]
ssh [hostname]
3. Man-in-the-Middle 공격 가능성
호스트 키 검증은 Man-in-the-Middle (MITM) 공격을 방지하기 위해 사용됩니다. 호스트 키가 예상치 않게 변경되었을 때 이 오류가 발생하면 MITM 공격의 가능성을 의심해봐야 합니다.
해결 방법: 서버 관리자에게 문의하여 호스트 키가 변경된 것이 정상인지 확인합니다. 변경이 정상적이라면 새로운 호스트 키를 수동으로 추가합니다.
4. 클라이언트의 ~/.ssh/known_hosts 파일이 손상된 경우
클라이언트의 ~/.ssh/known_hosts 파일이 손상되었거나 잘못된 형식으로 인해 호스트 키를 검증할 수 없는 경우에도 이 오류가 발생할 수 있습니다.
해결 방법: ~/.ssh/known_hosts 파일을 확인하고 문제가 있는 부분을 수정하거나 필요한 경우 파일을 삭제한 후 다시 서버에 접속하여 호스트 키를 추가합니다.
rm ~/.ssh/known_hosts
ssh [hostname or IP address]
위의 방법 중 하나를 통해 "Host key verification failed" 오류를 해결할 수 있습니다.