
개발자라면 API를 외부에 노출하는 것은 마치 현관문을 활짝 열어놓는 것과 같다는 것을 잘 알고 있을 것입니다. 때로는 API 키 하나만 유출되어도 누군가가 요금을 부풀리거나 서비스를 악용하기 시작할 수 있습니다. 이러한 문제를 방지하기 위해 Firebase는 다음과 같은 기능을 출시했습니다... 앱 확인이는 서버에 호출하는 주체가 실제로 사용자의 애플리케이션인지, 아니면 봇이나 악의적인 제3자인지 확인하기 위해 특별히 설계된 도구입니다.
가장 흥미로운 점은 이 시스템이 사용자가 누구인지에 초점을 맞추지 않는다는 것입니다(그건 인증의 역할입니다). 해당 장치의 합법성 또는 앱 자체를 보호하는 것입니다. 다시 말해, 소프트웨어가 사용자의 데이터에 접근하기 전에 소프트웨어의 신원을 확인하는 보호막을 만들어주는 것인데, 이는 엄청난 진전입니다. 백엔드를 보호합니다 피싱 및 청구 사기 방지.
이 메커니즘은 정확히 어떻게 작동하는 건가요?
이 과정은 매우 원활하게 진행되며 사용자를 방해하지 않도록 백그라운드에서 처리됩니다. 기본적으로 서비스를 활성화하면 앱이 해당 서비스에 접속합니다. 인증 제공업체 (안드로이드의 Play Integrity 또는 iOS의 DeviceCheck와 같은) 앱을 사용하여 앱의 진위 여부를 확인합니다. 제공업체가 승인하면 해당 인증서가 App Check 서버로 전송됩니다.
서버는 모든 것이 정상인지 확인한 후 애플리케이션에 메시지를 반환합니다. 앱 확인 토큰 만료일이 있는 토큰입니다. Firebase SDK는 이 토큰을 캐싱하고 보호된 서비스에 대한 모든 요청에 자동으로 첨부합니다. 따라서 백엔드는 요청에 이 토큰이 첨부된 경우에만 응답합니다. 유효하고 업데이트된 토큰외부 접근 시도를 모두 차단합니다.
견고성 및 보안 분석
앱 체크가 모든 문제를 해결해주는 만능 해결책이라고 생각하는 함정에 빠지지 않는 것이 중요합니다. 보안은 다음 사항에 직접적으로 달려 있습니다. 공급업체의 신뢰성 앱 인증을 선택하는 것은 매우 중요합니다. 인증은 가장 흔한 악용 경로의 대부분을 차단하지만, 모든 공격으로부터 100% 보호를 보장하는 것은 아닙니다. 하지만 의심할 여지 없이 확실한 보호 수단입니다. 필수적인 예방 조치 진지한 프로젝트라면 어떤 것이든 마찬가지입니다.
앱 체크와 Firebase 인증은 서로 다른 개념이라는 점을 명확히 구분하는 것이 중요합니다. 인증은 사용자의 신원을 보호하는 반면, 앱 체크는... 개발자를 보호합니다 앱이 변조되지 않았는지 확인합니다. 두 시스템은 서로 완벽하게 보완합니다. 하나는 사용자가 누구인지 알고, 다른 하나는 앱이 변조되지 않았음을 확인합니다. 이것이 오리지널 앱입니다..
제공업체 및 사용 제한
사용하는 플랫폼에 따라 정품 여부를 확인하는 방법이 다릅니다. Apple 생태계에서는 다음과 같은 방법이 사용됩니다. DeviceCheck 및 App Attest반면 안드로이드에서는 별이 플레이 무결성웹의 경우 가장 안정적인 옵션은 다음과 같습니다. reCAPTCHA Enterprise버전 v3도 있지만요.
비용 및 수수료와 관련해서는 이러한 사항들을 숙지해야 합니다. 예를 들어, Play Integrity는 표준 수준의 서비스를 제공합니다. 하루 10,000건의 통화reCAPTCHA Enterprise는 매달 처음 10,000건의 평가를 무료로 제공하지만, 그 이후에는 서비스가 더 이상 무료가 아닙니다. 그에 따른 비용이 발생합니다.트래픽이 이러한 수치를 초과할 것으로 예상되는 경우, Firebase 지원팀에 문의하여 제한을 늘리는 것이 가장 좋습니다.
맞춤형 환경 및 백엔드 구현
App Check은 Google 서비스에만 사용되는 것이 아닙니다. 다른 서비스에도 사용할 수 있습니다. 사용자 정의 백엔드 리소스클라우드 런에 있든 자체 서버에 있든 상관없이, 이 경우 토큰은 일반적으로 헤더에 포함되어 전송됩니다. X-Firebase-AppCheck 그리고 코드에서 이를 검증해야 합니다.
Node.js를 사용한다면, 다음을 구현할 수 있습니다. Express.js 미들웨어 이는 Firebase Admin SDK를 사용하여 토큰을 검증하는 방식입니다. Ruby와 같은 다른 언어에서는 토큰이 유효한지 확인하는 과정을 거칩니다. JSON 웹 토큰(JWT) 가입 후 알고리즘이 RS256인지 확인하고, 발신자와 수신자가 Firebase 프로젝트 번호와 일치하는지 확인하세요. 이 워크플로를 최적화하려면 다음 사항을 권장합니다. 안드로이드 스튜디오 다운로드 그리고 개발 환경을 올바르게 구성하십시오.
사례 연구: Google Maps와 FireCMS
매우 유용한 예로 Google Maps JavaScript API를 보호하는 것이 있습니다. 누군가가 API 키를 도용하여 다른 곳에서 사용하는 것을 방지하려면 앱 체크(App Check)에 연결할 수 있습니다. 먼저 키에 대한 접근을 제한합니다. 호스팅 도메인 그런 다음 구성합니다. ReCaptchaV3Provider 프런트엔드 코드에서요. 결국 지도는 다음 조건이 충족될 때만 로드됩니다. 토큰이 유효합니다승인되지 않은 페이지의 모든 요청을 차단합니다.
이용하시는 분들을 위해 파이어CMSFireCMS 클라우드 콘솔 또는 속성을 통해 앱 검사를 직접 활성화할 수 있으므로 통합이 매우 간단합니다. appCheck 설정에서 FireCMS 도메인을 추가하는 것을 잊지 마세요. 허용 목록 연결 오류를 방지하기 위해 reCAPTCHA 제공업체로부터 정보를 가져옵니다.
토큰 검증에 대한 기술적 세부 정보
수동으로 검증을 수행해야 하는 경우 엣지(예: Cloudflare Workers) Apigee에서는 이 프로세스가 엄격한 표준을 따릅니다. Firebase 엔드포인트에서 JWK 공개 키 세트를 가져오고, 토큰 서명을 확인하고, 다음 사항을 보장해야 합니다. 만료되지 않았습니다.
Apigee에서는 이를 정책으로 구현합니다. JWT를 확인하세요 발급자와 대상은 프로젝트 번호를 사용하여 정의됩니다. 토큰이 유효하지 않거나 헤더에 없는 경우 요청은 거부됩니다. 즉시 거부됨 401 오류를 발생시켜 악의적인 요청으로부터 인프라를 안전하게 보호합니다.
App Check를 사용하면 취약한 공개 API를 합법적인 소프트웨어만 접근할 수 있는 폐쇄형 시스템으로 전환할 수 있습니다. 하드웨어 및 소프트웨어 검증과 JWT 토큰 관리를 결합하여 훨씬 더 안전하고 사기 방지 기능이 뛰어난 개발 환경을 구축할 수 있습니다. 다른 사용자가 해당 주제에 대해 알 수 있도록 정보를 공유하세요.
