보안
최종 수정일: 2026-09-03
Appnaly이(가) 권한, 토큰, 데이터를 다루는 방식입니다.
읽기 전용 권한
Analytics 권한은 analytics.readonly 하나만 요청합니다. 이 애플리케이션에는 Google Analytics 계정의 무언가를 생성, 수정, 삭제할 수 있는 코드 경로가 존재하지 않습니다.
로그인과 Analytics 연결의 분리
로그인은 openid, email, profile만 요청합니다. Analytics 권한은 "Connect Google Analytics" 버튼을 누른 뒤 별도의 동의 화면에서만 요청합니다.
저장 시 토큰 암호화
Refresh Token은 AES-256-GCM으로 암호화한 뒤 데이터베이스에 저장합니다. Access Token은 서버 메모리에만 존재합니다. 토큰은 브라우저로 전달되지 않고 URL에 포함되지 않으며 로그에도 기록되지 않습니다.
테넌트 격리
저장되는 모든 행에는 소유 사용자 ID가 포함되며, 모든 조회는 인증된 세션의 사용자로 필터링됩니다. 어떤 API도 클라이언트가 보낸 사용자 ID를 신뢰하지 않습니다.
원시 이벤트 미저장
이 서비스는 집계된 수치만 저장합니다. 앱 사용자의 개별 이벤트는 데이터베이스에 저장되지 않습니다.
전송 및 헤더
프로덕션 트래픽은 HTTPS만 사용하며 HSTS, 제한적인 Content-Security-Policy, X-Content-Type-Options, Referrer-Policy, Permissions-Policy를 모든 응답에 적용합니다. 세션 쿠키는 HttpOnly, Secure, SameSite=Lax로 설정됩니다.
OAuth 보안
Analytics 연결은 Authorization Code Flow와 PKCE를 사용하고, 암호화된 HttpOnly 쿠키에 바인딩된 무작위 state 값, 정확히 일치하는 Redirect URI, 콜백에서의 세션 검증을 적용합니다.
연결 해제 및 삭제
연결 해제는 Google 권한을 취소하고 저장된 토큰을 삭제합니다. 계정 삭제는 보관 중인 모든 데이터를 제거합니다. 두 기능 모두 설정에서 사용할 수 있습니다.
취약점 신고
자세한 내용을 motionfit.fit@gmail.com로 보내주세요. 영업일 기준 며칠 이내에 회신하는 것을 목표로 합니다.
문의
이 페이지에 대한 문의: motionfit.fit@gmail.com