서론졸업 프로젝트를 하다 React Native 환경의 클라이언트에서 앱 무결성 검증을 해야 하는 상황이 되었다.이 기록은 앱 무결성 검증을 하며 헤맨 부분의 기록이다.본론React Native의 경우, 여러가지 설정이 복잡하게 들어가있다. 우선 다음과 같은 flag들을 추가해야 한다.{ "expo": { "ios": { "entitlements": { "com.apple.developer.devicecheck.appattest-environment": "development" } } }}해당 코드는 app.json에 추가되어야 하는 파트이다.iOS APP을 빌드할 때 AppAttest 환경을 어떤 것을 사용할 것이냐에 대한 필드이다.const getDevic..
서론졸업 프로젝트를 하다 React Native 환경의 클라이언트에서 앱 무결성 검증을 해야 하는 상황이 되었다.이 기록은 앱 무결성 검증을 하며 헤맨 부분의 기록이다.본론iOS AppAttest도 앱의 변조 여부를 파악하는 역할을 한다. 하지만 iOS의 경우 키 복호화 등 절차가 너무 복잡해 라이브러리를 사용하여 문제를 해결하였다.// implementation("ch.veehait.devicecheck:devicecheck-appattest:0.9.6")lateinit var attest: AppleAppAttestinit { attest = AppleAppAttest( app = App(teamId, packageName), appleAppAttestEnvironmen..
서론졸업 프로젝트를 하다 React Native 환경의 클라이언트에서 앱 무결성 검증을 해야 하는 상황이 되었다.이 기록은 앱 무결성 검증을 하며 헤맨 부분의 기록이다.본론구글의 Integrity API Decode 과정에는 서비스 계정이 필요하다.https://playintegrity.googleapis.com/v1/$packageName:decodeIntegrityToken에 Header로 Authorization: Bearer를 넘겨줄 때, 본인의 계정을 사용할 필요가 없다. 오히려 사용해서는 안된다.반드시 서비스 계정을 생성, 그 서비스 계정의 json을 이용해 AccessToken을 받아오도록 하자.// implementation("com.google.auth:google-auth-library..
서론졸업 프로젝트를 하다 React Native 환경의 클라이언트에서 앱 무결성 검증을 해야 하는 상황이 되었다.이 기록은 앱 무결성 검증을 하며 헤맨 부분의 기록이다.본론우선 Play Integrity API는 앱의 무결성 검증. 즉 변조(해킹)된 앱으로 접속해 해킹하는 것을 방지하는 역할을 한다.무결성 검증은 배포 앱에서 가장 중요한 부분 중 하나이다.우선 Google Cloud Console의 설정을 요구한다.이 파트는 다른 블로그를 참고하길 바란다. 너무 잘 설명되어 있다.Firebase AppCheck와 직접 구현. 두 가지의 방법이 있다.우리는 직접 구현을 선택하였다.Springboot backend를 구현한다.여기가 가장 힘든 파트 중 하나이다.우선 자신의 환경에 맞추어 @RestContro..
서론많은 웹사이트에서 악성 사용자를 막기 위해 캡챠를 사용하곤 한다. 대표적으로 ReCaptcha가 있다.하지만 ReCaptcha는 일정 사용량 이상(10,000건)부터는 과금이 이루어진다.하지만 많은 유용한 도구들은 대체제가 있기 마련이다. 내가 제시하는 대안은 Turnstile 이다.Turnstile의 장점은 다음과 같다.빠르다정확하다.저렴하다.Cloudflare에서 완전 무료를 선언한 Turnstile은 빠르고 정확하며 저렴하기까지 하다.ReCaptcha에서 넘어올 만 하지 않은가?본론사용법과 관련된 내용은 주로 Turnstile Documentation에서 가져온 내용이다.먼저 client 검증이다.script 태그와 div 태그를 적절히 조합하면 위의 gif처럼 캡챠를 시작하는 모습을 볼 수 있..