본문으로 바로가기

모바일 개발자들을 위한 보안 토큰 저장: 최적화된 방법

사용자 데이터를 보호하고 공격으로부터 보호하기 위해 모바일 앱에서 인증 토큰을 안전하게 저장하는 방법을 배워보세요.

마틴 도나디우

마틴 도나디우

콘텐츠 마케터

모바일 개발자들을 위한 보안 토큰 저장: 최적화된 방법

인증 토큰을 안전하게 저장하는 것은 모바일 앱 보안의 핵심입니다. 토큰은 사용자 계정,敏感 데이터 및 서비스의 열쇠입니다. compromis 된 경우, 사용자 ID 도난, 금융 사기 및 데이터 침해로 이어질 수 있습니다. 보안 토큰 저장: 모바일 개발자들을 위한 최적화된 방법. 이와 같은 방법으로 보호하세요:

중요한 점:

  • 플랫폼-자연적인 보안 저장소 사용: iOS Keychain 또는 Android Keystore에서 하드웨어 백업 보안을 위해 토큰을 저장하세요.
  • 휴면 중 암호화 토큰 사용: Android의 EncryptedSharedPreferences 또는 iOS의 CryptoKit 토큰 노출을 최소화
  • : 짧은 유효 기간의 토큰과 토큰 갱신을 통해 위험을 줄입니다.안전한 통신
  • : 항상 HTTPS를 사용하고 인증서 핀링을 구현하여 중간인 첩보를 방지하세요.Use Platform-Native Secure Storage
  • 토큰 생명주기 관리: 자주 만료, 갱신, 취소하여 도난으로부터 최소한의 피해를 입힙니다.

저장 방법 간단 비교:

저장 방법 보안 수준 사용성 최적의 사용 사례
메모리 내 저장 높음 낮음 단기 세션, 고보안 필요
로컬 저장 __CAPGO_KEEP_0__ __CAPGO_KEEP_0__ __CAPGO_KEEP_0__
__CAPGO_KEEP_0__ __CAPGO_KEEP_0__ __CAPGO_KEEP_0__ __CAPGO_KEEP_0__
__CAPGO_KEEP_0__ __CAPGO_KEEP_0__ __CAPGO_KEEP_0__ __CAPGO_KEEP_0__
__CAPGO_KEEP_0__ 매우 높음 중간 안드로이드 앱이 보안 저장소가 필요합니다.
고유 암호화 변수 중간 특별한 보안 요구 사항

앱의 현재 토큰 저장 방법을 감사하고 사용자 및 브랜드를 보호하기 위해 다음 보안 관행을 implement하세요.

Faux Disk Encryption Mobile 기기에서 보안 저장소의 현실 - Daniel Mayer & Drew Suarez

보안 토큰 저장의 기본 규칙

토큰을 보호하려면 보안에 여러 층을 사용해야 합니다. 여러 보안 장치를 combine하면 하나의 장치가 실패해도 다른 장치가 sensitive 데이터를 보호합니다. Capacitor 앱의 경우, 이러한 관행을 유지하기 위해 플랫폼 간 토큰 보안을 유지하는 것이 중요합니다.

HTTPS와 인증서 고정

HTTPS 암호화는 토큰截获에 대한 첫 번째 방어입니다. 앱과 서버 간의 모든 상호 작용이 HTTPS를 사용하여 전송 중 데이터를 암호화하여 공격자에 대한 노출을 방지합니다.

이것을 강화하기 위해 구현하세요. 인증서 고정. Capacitor 앱의 경우, @Capacitor/__CAPGO_KEEP_1__-ssl-pinning은 iOS와 Android의 CapacitorHttp에서 HTTPS 연결을 번들된 인증서로 고정합니다. 이 기술은 앱이 신뢰할 수 있는 서버와만 통신하도록 보장하며, 누군가가 위조 인증서를 사용하더라도 앱이 신뢰할 수 있는 서버와만 통신하도록 보장합니다. 앱에 서버의 인증서나 공개 키를 고정하면 앱과 서버 간의 직접적인 신뢰 관계를establish합니다. @capgo/capacitor-ssl-pinning 실제 예시: 트위터는 Man-in-the-Middle (MitM) 공격을 경험한 후 모바일 앱에 인증서 고정을 도입했습니다. 그들의 팀은 서버의 SSL 인증서 공개 키를 앱에 직접 삽입했습니다. 사용자가 연결할 때, 앱은 고정된 인증서와 인증서를 확인했습니다. 일치하지 않으면 연결을 즉시 종료했습니다. 이 접근 방식은 MitM 공격을 크게 줄이고 사용자에 대한 신뢰도를 높였습니다.

다음 중 하나를 선택하세요. [5]

인증서 고정 [5].

(인증서의 전체 유효성을 검증)으로 최대 보안을 제공합니다. 인증서 고정 인증서의 전체 유효성을 검증 공개 키 핑킹 (유효한 공개 키만 검증) 인증서 갱신 시 더 많은 유연성을 제공하기 위해. OkHttp Android용 Alamofire iOS용 [5].

이러한 기술을 구현하는 것을 단순화하는 도구들

보안 전송이 구축된 후, 다음 단계는 토큰 노출을 최소화하는 것입니다.

토큰 노출 제한

  • 토큰 노출을 줄이는 것은 토큰의 유효 기간과 권한의 범위를 제한하는 것입니다. 아이디어는 간단합니다: 토큰이 유효한 시간이 짧고 권한이 적으면, 만약 토큰이 훼손된다면 위험은 낮아집니다. 사용 단기 액세스 토큰 사용하기 (분 단위로 유효 시간 설정하기) refresh 토큰과 pair하여 사용자 세션 유지하기 위해 장기 액세스 토큰을 장치에 저장하지 않도록 하세요. 이 접근 방식은 훼손된 토큰이 곧바로 쓸모없는 토큰이 되도록 합니다.
  • 권한 제한 원칙을 적용하세요. 권한 제한 원칙. 예를 들어, 사용자 프로필 데이터만 읽기 위해 토큰이 필요하다면, 사용자 계정 설정을 수정하거나 결제 정보에 접근할 수 있는 권한을 부여하지 마세요.
  • Refresh 토큰 회전을 활성화하세요. Refresh 토큰 회전, 새로운 접근 토큰을 요청할 때마다 새로운 Refresh 토큰이 발급됩니다. Refresh 토큰이 훔쳐진 경우,-legitimate 앱이 토큰을 사용하면 토큰이 유효하지 않아지며 위험 창구가 줄어듭니다. [4].

토큰 노출을 제한함으로써, 취약점이 발생한 경우에도 중요한 피해를 입히지 않도록 합니다. 다음으로 암호화는 장치가 물리적으로 손상된 경우에도 토큰이 안전하도록 합니다.

휴지 상태의 토큰 암호화

휴지 상태의 토큰 암호화 장치에 저장된 토큰을 보호합니다. 장치가 잃어버려도, 훔쳐져도, 악성 소프트웨어에 의해 손상되어도 토큰이 읽을 수 없도록 합니다.

최신 모바일 운영 체제는 Android의 SharedPreferences나 iOS의 NSUserDefaults와 같은 표준 방법보다 훨씬 더 신뢰할 수 있는 보안된 하드웨어 저장 옵션을 제공합니다. [4].

  • Android: 사용하세요. EncryptedSharedPreferences (Android 10 이상에서 사용할 수 있습니다). 이 도구는 암호화 및 키 관리를 자동으로 처리하여 구현을 단순화하고 보안을 강화합니다. 예를 들어, SecureJWTStorage class는 JWT를 안전하게 저장하고 검색할 수 있습니다. EncryptedSharedPreferences 을 사용하지 않고 복잡한 사용자 정의 암호화 code가 필요하지 않습니다.
  • iOS의 경우: Keychain은 보안 토큰 저장을 위한 하드웨어 암호화 기능을 제공합니다. 개발자들은 KeychainHelper class를 사용하여 JWT 토큰을 관리하거나 Keychain에 토큰을 저장하기 전에 CryptoKit 을 사용하여 토큰을 암호화하여 보안을 강화할 수 있습니다. [4].

Android와 iOS 모두 하드웨어 백업 암호화를 사용하며, iOS의 Secure Enclave와 Android의 Hardware Security Module을 사용하여 암호화 키를 안전한 하드웨어에서 저장합니다. 이 컴포넌트는 운영 체제의 주요 부분에서 격리되어 있습니다.

마지막으로, 데이터 보유 정책을 명확하게 정의하세요. 만료된 토큰을 자동으로 삭제하고 장치에서 더 이상 필요하지 않은 경우-sensitive 데이터를 안전하게 삭제하세요. 이러한 관행은 토큰이 절대적으로 필요하지 않은 한 저장되는지 확인합니다. [6].

플랫폼별 토큰 저장 방법

모바일 플랫폼은 보안과 사용자 경험을 모두 충족하는 보안 토큰을 제공하는 전용 도구를 제공합니다. 이러한 네이티브 옵션은 HTTPS, 암호화 및 노출 제한과 같은 핵심 관행을 기반으로 하며 이에 대한 이전 설명에서 다루었습니다.

Android: Keystore 및 EncryptedSharedPreferences

EncryptedSharedPreferences

Android 기기는 Keystore 시스템과 EncryptedSharedPreferences를 통해 강력한 토큰 보호를 제공합니다. Keystore Page/area: Capgo 마케팅 웹사이트. 역할: 짧은 UI 레이블 또는 네비게이션 아이템. Seen in: page trust.astro. Message key `and` (And). EncryptedSharedPreferencesKeystore는 암호화 키를 보호된 환경에서 안전하게 저장하여 추출하기 어려운 키를 보장하고 이 키를 안전한 작업만 위해 사용할 수 있도록 합니다. 또한 사용자 인증을 요구하는 제한을 추가할 수 있습니다. Android 9 (API level 28) 이상 버전을 실행하는 기기에서 StrongBox KeyMint 표준 신뢰할 수 있는 실행 환경(TEE)보다 더 큰 분리성을 제공합니다. StrongBox가 사용 가능한지 확인하려면 FEATURE_STRONGBOX_KEYSTORE, 그리고 이를 활성화하려면 KeyGenParameterSpec.Builder.setIsStrongBoxBacked().

암호화된 SharedPreferences는 키-값 pairs를 더 간단하게 안전하게 저장할 수 있는 방법을 제공합니다. 데이터를 암호화하고 키를 안전하게 관리하며, 23 이상의 API 레벨을 지원합니다. 안드로이드 엔지니어인 Arun은 사용의 용이성을 강조합니다:

“code 줄만 몇 줄을 작성하면, 보안을 크게 향상시킬 수 있습니다. code는 강력하고 사용하기 쉬운 데이터를 안드로이드 앱에서 안전하게 보호하는 솔루션입니다.” 안전한 데이터 처리를 위해, 오류 처리를 구현하고 키를 90-180일마다 회전하고 SharedPreferences에 저장하지 말아야 하는 민감한 데이터(예: 신용 카드 번호)를 피해야 합니다. 이러한 데이터는 보안 백엔드에서 처리해야 합니다. iOS: Keychain과 Secure Enclave EncryptedSharedPreferencesiOS에서 토큰 보안은 Keychain과 Secure Enclave에 의존합니다.

Keychain

Secure Enclave Keychain과 Secure Enclave

Keychain Secure Enclave Keychain Secure EnclaveKeychain은 sensitive data, password 및 token과 같은 데이터를 AES-256-GCM 암호화로 보호하는 안전한 저장소입니다. Keychain은 metadata와 각 저장된 항목에 대한 고유한 키를 위한 두 개의 키 시스템을 사용합니다. Metadata 키는 Secure Enclave에 의해 보호되며 빠른 검색을 위해 캐시되며, 비밀 키는 추가 보안을 위해 Enclave로의 라운드 트립이 필요합니다. Keychain은 또한 같은 개발자로부터의 앱 간에 항목을 안전하게 공유하는 기능을 제공하며, 이 기능은 securityd daemon

Secure Enclave는 P256 키와 약 4MB의 안전한 저장소를 제공하여 보호를 강화합니다. Face ID, Touch ID, 또는 passcode 인증을 위한 설정과 같은 ACL을 구성하여 보안을 강화할 수 있습니다. kSecAttrAccessibleWhenUnlockedoption .whenPasscodeSetThisDeviceOnly option

Capacitoredge case

Capacitor Framework Documentation Website

For cross-platform apps, Capacitor offers secure storage plugins that simplify token security without requiring platform-specific code. @capgo/capacitor-data-storage-sqlite Capacitor @capgo/capacitor-persistent-account 인증 데이터를 다시 설치할 때까지 보존합니다. iOS에서 플러그인은 암호화된 시스템 Keychain에 데이터를 저장하며, Android에서 플러그인은 AES GCM 모드에서 Android Keystore에 의해 생성된 키를 사용하여 데이터를 암호화한 후 SharedPreferences에 저장합니다. 웹 환경에서 플러그인은 암호화되지 않은 localStorage - 그러나 디버깅 목적으로만.

2025년 2월, martinkasa는 capacitor-secure-storage-plugin을 업데이트하여 Capacitor v7을 지원하여 iOS 및 Android에서 문자열 값을 안전하게 저장할 수 있도록 하였습니다. 이러한 플러그인은 로그인 자격 증명과 JSON 데이터를 저장하기에 적합합니다. 그러나 native 솔루션에서 제공하는 granular 제어를 제공하지 못할 수 있습니다. enterprise급 앱에 고급 보안 요구 사항이 있는 경우 native 옵션인 iOS Keychain Services와 Android Keystore APIs - 또는 향상된 도구인 's Identity Vault -가 더 적합할 수 있습니다. __CAPGO_KEEP_0__의 공식 문서도 sensitive 데이터, 예를 들어 암호화 키 또는 세션 토큰을 저장하기 위해 native secure storage를 사용하는 것을 권장합니다.Capacitor 앱에 대해 live 업데이트를 배포할 때, Capacitor와 같은 서비스는 토큰 보안을 더욱 강화할 수 있습니다. Capacitor의 end-to-end 암호화는 보안 패치나 토큰 관리 개선이 포함된 업데이트를 안전하게 전달하여 앱의 보안 프레임워크의完整성을 유지합니다.

When deploying live updates for Capacitor apps, services like Capgo Capgo

__CAPGO_KEEP_0__

{"targetLanguage":"Korean","pagePath":"/ko/blog/secure-token-storage-best-practices-for-mobile-developers/","protectedTokens":["Cloudflare","Capacitor","GitHub","Capgo","code","API","SDK","CLI","npm","bun"],"items":[{"text":"토큰을 효과적으로 관리하는 것은 생성, 만료, 그리고 취소에 대한 관리를 의미합니다. 개발자들은 강력한 보안 조치와 사용자 경험의 완벽성을 균형을 이룰 수 있는 시스템을 설계해야 합니다. 아래에, 우리는 토큰 만료, 취소, 그리고 안전한 OTA(Over-The-Air) 업데이트를 위한 전략에 대해 살펴보겠습니다. 이를 통해 comprehensive 토큰 관리 접근 방식을 구축할 수 있습니다."},{"text":"토큰 만료 및 갱신 방법"},{"text":"단기적인 접근 토큰과 더 오랜 기간 유지되는 갱신 토큰을 함께 사용하는 것은 안전한 토큰 처리의 핵심 전략입니다. 접근 토큰은 5-15분 이내로 만료되도록 설정하여 compromis된 토큰의 위험을 줄일 수 있습니다. 반면, 갱신 토큰은 사용자가 자주 재인증하지 않도록 유지할 수 있는 몇 일 또는 몇 주 동안 유효할 수 있습니다."},{"text":"토큰 만료는 API의 안전성과 효율성을 유지하는 데 중요한 역할을 합니다."},{"text":"."},{"text":"이와 함께 토큰 회전 - 이전에 발급된 토큰을 취소하는 방법 -을 사용하면 추가적인 보호를 제공할 수 있습니다. 이 방법은 compromis된 갱신 토큰으로 인한 손상을 최소화하고 의심스러운 활동을 식별하는 데 도움이 될 수 있습니다. 예를 들어, 이전 토큰의 재사용을 식별할 수 있습니다."}]}

{"targetLanguage":"Korean","pagePath":"/ko/blog/secure-token-storage-best-practices-for-mobile-developers/","protectedTokens":["Cloudflare","Capacitor","GitHub","Capgo","code","API","SDK","CLI","npm","bun"],"items":[{"text":"토큰 만료 및 갱신 방법"},{"text":"단기적인 접근 토큰과 더 오랜 기간 유지되는 갱신 토큰을 함께 사용하는 것은 안전한 토큰 처리의 핵심 전략입니다. 접근 토큰은 5-15분 이내로 만료되도록 설정하여 compromis된 토큰의 위험을 줄일 수 있습니다. 반면, 갱신 토큰은 사용자가 자주 재인증하지 않도록 유지할 수 있는 몇 일 또는 몇 주 동안 유효할 수 있습니다."},{"text":"토큰 만료는 API의 안전성과 효율성을 유지하는 데 중요한 역할을 합니다."},{"text":"."},{"text":"이와 함께 토큰 회전 - 이전에 발급된 토큰을 취소하는 방법 -을 사용하면 추가적인 보호를 제공할 수 있습니다. 이 방법은 compromis된 갱신 토큰으로 인한 손상을 최소화하고 의심스러운 활동을 식별하는 데 도움이 될 수 있습니다. 예를 들어, 이전 토큰의 재사용을 식별할 수 있습니다."}]

{"targetLanguage":"Korean","pagePath":"/ko/blog/secure-token-storage-best-practices-for-mobile-developers/","protectedTokens":["Cloudflare","Capacitor","GitHub","Capgo","code","API","SDK","CLI","npm","bun"],"items":[{"text":"토큰 만료는 API의 안전성과 효율성을 유지하는 데 중요한 역할을 합니다."},{"text":"."},{"text":"."},{"text":"."}]}

{"targetLanguage":"Korean","pagePath":"/ko/blog/secure-token-storage-best-practices-for-mobile-developers/","protectedTokens":["Cloudflare","Capacitor","GitHub","Capgo","code","API","SDK","CLI","npm","bun"],"items":[{"text":"토큰 만료와 갱신 방법"},{"text":"단기적인 접근 토큰과 더 오랜 기간 유지되는 갱신 토큰을 함께 사용하는 것은 안전한 토큰 처리의 핵심 전략입니다. 접근 토큰은 5-15분 이내로 만료되도록 설정하여 compromis된 토큰의 위험을 줄일 수 있습니다. 반면, 갱신 토큰은 사용자가 자주 재인증하지 않도록 유지할 수 있는 몇 일 또는 몇 주 동안 유효할 수 있습니다."},{"text":"."},{"text":"."}] [7]{"targetLanguage":"Korean","pagePath":"/ko/blog/secure-token-storage-best-practices-for-mobile-developers/","protectedTokens":["Cloudflare","Capacitor","GitHub","Capgo","code","API","SDK","CLI","npm","bun"],"items":[{"text":"."},{"text":"."},{"text":"."},{"text":"."}]}

Refresh 메커니즘을 설계할 때, 토큰은 갱신 프로세스 중에 엄격하게 검증되어야 합니다. brute force 공격을 방지하기 위해 rate limiting을 사용하고, 여러 위치에서 동시에 refresh 요청이 발생하는 이상을 감지하기 위해 자동 모니터링을 사용하세요. 사용자 세션을 보호하는 데 있어 성능에 영향을 주지 않으면서 보안과 성능을 균형을 이룰 수 있습니다.

토큰 취소 및 무효화

토큰 만료는 중요하지만, 토큰 취소는 보안에 또 다른 층을 더해주며, 사용자 로그아웃, 잃어버린 장치, 또는 의심스러운 보안 침해와 같은 시나리오에서 특히 중요합니다. 상태가 없는 JWT 접근 토큰은 만료될 때까지 유효하지만, refresh 토큰을 효과적으로 관리하면 새로운 접근 토큰의 발급을 차단할 수 있습니다.

권한이 없는 사용자가 sensitive 리소스에 접근하는 것을 방지하기 위해 토큰을 즉시 취소하는 것은 중요합니다. [8]. 즉시 토큰을 무효화하기 위해, 취소된 토큰을 추적하고 API 요청 시에 확인하는 서버측 블랙리스트를 구현하는 것을 고려하세요. 또한, Single Logout (SLO) 기능은 사용자가 여러 인증 세션을 한 번에 종료할 수 있도록 하며, 연결된 서비스의 모든 관련된 refresh 토큰을 취소할 수 있습니다.

도난된 토큰을 처리하는 데 있어 명확한 프로토콜을 갖추는 것도 중요합니다. 이러한 프로토콜에는 즉각적인 토큰 취소, 자동 보안 알림, 영향을 받은 사용자에게 신속한 알림, 그리고 도난된 토큰과 관련된 모든 활성 세션의 종료가 포함됩니다.

OTA 시스템을 사용한 안전한 토큰 업데이트

OTA 업데이트를 통해 토큰 보안을 유지하는 데 중요한 역할을 하는 OTA 시스템을 통해 보안 패치, API 키 회전, 인증서 업데이트 및 유효성 검증 로직 최적화가 빠르게 배포될 수 있습니다.

개발자들이 Capacitor을 사용하는 경우, Capgo과 같은 도구는 OTA 솔루션을 제공하며, 끝에서 끝까지 암호화가 되어 있습니다. 이로 인해 Apple과 Android의 지침을 준수하면서도 보안 업데이트들이 안전하게 장치로 전달되며, 긴급 보안 취약점을 해결하는 데 유용합니다.

애플리케이션과 인프라를 위해 emerging threat를 감시하여 token 보안을 강화하세요. OTA 시스템을 사용하여 runtime 방어 및 기타 고급 대책을 배포하여 의심스러운 사용자 또는 장치에 대한 즉각적인 차단을 보장하면서 정상 사용자에게 서비스를 중단하지 않도록 하세요.

토큰 저장 옵션 비교: 보안성 vs. 사용 편의성

보안 토큰 저장을 위한 최적의 방법을 결정할 때는 보안과 사용성을 적절히 균형을 맞추는 것이 중요합니다. 선택한 방법은 앱의 취약점에 대한 공격 위험과 사용자 경험에 직접적인 영향을 미칠 수 있습니다. 다양한 저장 방법의 장단점을 분석해 보겠습니다.

In-Memory Storage vs. Persistent Storage

메모리 저장소 응용 프로그램 메모리 또는 자바 스크립트 변수에 토큰을 저장하는 것은 매우 안전한 옵션입니다. 토큰이 메모리나 변수에 저장되지 않기 때문에, persistent storage공격자가 전통적인 XSS 공격을 사용하여 액세스할 수 있는 기회가 적어진다.

하지만, 사용자가 페이지를 새로 고치거나 새로운 탭을 열 때 메모리 내에 저장된 토큰이 사라지기 때문에 메모리 내 저장은 웹 앱에서 사용자가MOOTH한 브라우징 경험을 기대하는 경우에 실용적이지 않다.

반면에 지속적인 저장 지속적인 저장 [9].

지속적인 저장 [4]지속적인 저장

For mobile apps using Capacitor, 지속적인 저장 지속적인 저장 [9]지속적인 저장 [9]지속적인 저장 방법은 로컬 스토리지, 세션 스토리지 또는 쿠키와 같은 방법이 있다. 지속적으로 저장된 토큰은 사용자가 브라우저를 닫고 나중에 돌아와서 이전에 떠났던 곳에서 다시 시작할 수 있게 해준다. 다시 로그인할 필요가 없다.

Keychain/Keystore vs. Custom Encryption

모바일 애플리케이션에 플랫폼-자연적인 보안 저장소 iOS Keychain과 Android Keystore와 같은

The beauty of these native tools lies in their simplicity. They’re built into the operating systems, so developers don’t have to write extensive code to implement them. Plus, they support features like 이러한 네이티브 도구의 아름다움은 단순함에 있습니다. 운영 체제에 통합되어 개발자가 이를 implement하기 위해 __CAPGO_KEEP_0__를 작성해야 하는 것을 피할 수 있습니다. 또한, 생체 인증 [10].

와 중앙 집중식 자격 증명 관리보안과 사용자 편의성을 모두 향상시킵니다. [10]Custom encryption

는 개발자에게 더 많은 통제력을 제공하지만, 중요한 문제가 있습니다. 보안은 암호화가 얼마나 잘 implement되었는지와 키가 얼마나 안전하게 관리되었는지에 따라 달라집니다.

많은 개발자가 보안 시스템을 만들기 위한 복잡성을 과소 평가하여 취약점이 발생할 수 있습니다. 또한, 암호화 표준이 발전하는 것은 custom 솔루션에 대한 지속적인 업데이트와 유지 관리가 필요하다는 것을 의미합니다. 이는 팀이 이 분야에 깊은 전문 지식을 가지고 있지 않다면 리소스가 많이 소모됩니다. 보안 수준 사용성 implementation 복잡도 최적의 사용 사례
메모리 내 저장 높음 새로 고침 시 데이터 손실 (Low) 높음 고급 보안, 짧은 세션
로컬 저장소 높음 높음 __CAPGO_KEEP_0__ __CAPGO_KEEP_0__
__CAPGO_KEEP_0__ __CAPGO_KEEP_0__ __CAPGO_KEEP_0__ __CAPGO_KEEP_0__ __CAPGO_KEEP_0__
__CAPGO_KEEP_0__ __CAPGO_KEEP_0__ __CAPGO_KEEP_0__ __CAPGO_KEEP_0__ __CAPGO_KEEP_0__
iOS Keychain 매우 높음 중간 낮음 iOS 네이티브/하이브리드 앱
Android Keystore 매우 높음 중간 낮음 Android 네이티브/하이브리드 앱
고유 암호화 변수 Medium High Specialized security requirements

이 표는 플랫폼-자체 스토리지 옵션인 Keychain과 Keystore가 보안성과 구현의 용이성의 강력한 combination을 제공하는 것을 강조합니다. 이들은 개발자가 암호학을 마스터할 필요 없이 강력한 보호를 제공합니다.

For Capacitor developers, using secure storage plugins to access these native solutions is a smart move. It combines the hardware-backed security of Keychain and Keystore with the cross-platform flexibility that Capacitor offers.

마지막으로, 토큰 저장의 선택은 앱의 위협 모델과 사용자 기대에 맞춰야 합니다. sensitive 데이터를 처리하는 앱, 예를 들어 의료 또는 금융 앱은 보안을 우선해야 합니다. 반면, 소비자 앱은 사용자 경험을 개선하기 위해 약간의 위험을 감수할 수 있습니다. 이러한 트레이드 오프를 이해하면 앱의 요구에 맞는 저장 방법을 선택할 수 있습니다.

Key Takeaways

사용자 데이터를 보호하기 위한 보안 토큰 저장은 앱의完整성을 유지하기 위한 기술적 베스트 프랙티스입니다. 2022년 81%의 확인된 침해가 약한, 재사용된, 또는 도난된 비밀번호와 관련이 있다는 점을 고려할 때, 모바일 개발자는 강력한 토큰 보안 조치를 우선해야 합니다. Best Practices Summary [12]효과적인 토큰 보안 계획은 여러 layer의 보호를 필요로 합니다. 먼저

__CAPGO_KEEP_0__

를 사용하여 시작하세요. 플랫폼 네이티브 보안 저장소iOS Keychain 및 Android Keystore와 같은 하드웨어 백업 보안을 제공하는 저장소

LocalStorage 또는 IndexedDB에 토큰을 저장하지 않도록 피하십시오 [2]이러한 방법은 XSS 공격에 취약합니다. 대신 운영 체제에 내장된 보안 저장소 옵션을 사용하여 제한된 접근 권한을 보장하십시오. Capacitor을 사용하는 개발자에게는 보안 저장소 플러그인으로 native 보호 기능에 접근할 수 있는 방법이 제공됩니다.

토큰 생명 주기 관리는 또 다른 중요한 측면입니다. 토큰을 정기적으로 만료하고 리프레시 토큰 회전을 implement하여 액세스 토큰이 요청될 때마다 새로운 리프레시 토큰을 생성하십시오 [3]리프레시 토큰의 유효 기간을 짧게 유지하면 도난의 위험이 줄어듭니다.

서명 키를 비밀로 유지하고 필수 서비스에만 공유하십시오 [1]토큰을 로깅하거나 URL에 포함하는 등의 위험한 방법을 피하십시오 [11]이러한 단계를 통해 토큰 관리 전략을 강화할 수 있습니다.

개발자에게 다음 단계

이러한 최적화 방법을 통해 앱의 토큰 보안을 개선할 수 있습니다.

  • 토큰 저장 방법을 감사하십시오 인터넷 앱에서 안전하지 않은 솔루션인 LocalStorage를 사용하고 있다면, 플랫폼에서 제공하는 안전한 저장소로 마이그레이션을 우선으로 하세요. Capacitor 앱의 경우, 안전한 저장소 플러그인을 사용하여 네이티브 보호를 효과적으로 사용하세요.

  • layered 인증을 구현하세요. low-risk 액션에 대해 더 단순한 방법을 사용하세요, 그러나 sensitive 작업에 대해 multi-factor 인증 (MFA) 또는 biometrics를 요구하세요. Microsoft에 따르면 MFA는 99.9%의 자동화된 사이버 공격을 차단할 수 있습니다. 그러나 사용자 경험을 고려하세요 - 연구에 따르면 사용자가 MFA를 피하기 때문에 불편함을 피하기 때문에 약 1/3의 사용자가 MFA를 피합니다. multi-factor authentication biometrics [12]99.9%의 자동화된 사이버 공격을 차단할 수 있습니다. [12].

  • MFA를 피하기 때문에 불편함을 피하기 때문에 약 1/3의 사용자가 MFA를 피합니다. OTA (over-the-air) 업데이트 시스템을 사용하여 안전하고 즉각적인 롤아웃을 수행하세요. Capgo 도구를 사용하여 Capacitor 앱에 대해 암호화된 라이브 업데이트 기능을 사용하여 보안 패치를 사용자에게 전달할 수 있습니다. 업데이트 중에 토큰의 안전성을 훼손하지 않도록 보장합니다.

  • 토큰의 수명 주기를 관리하세요. 정기적인 만료, 갱신, 취소 프로토콜은 필수입니다. 보안 위험을 최소화하기 위해 토큰 수명 주기 관리를 반영하도록 구현하세요.

  • 인증 패턴을 모니터링하세요. 비정상적인 활동을 감시하고 보안 조치를 조정하세요. [13]. 개발 프로세스의 일상적인 부분으로서 정기적인 보안 감사가 되어야 합니다.

모바일 보안이 계속 진화하고 있지만, 핵심 원칙은 여전히 동일합니다: native secure storage를 사용하십시오, token의 생명주기를 효과적으로 관리하십시오, 그리고 암호화는 절대적으로 필수적입니다. 81%의 스마트폰이 2022년 현재 생체 인식 장치로 장착되어 있습니다. 2022년 [12]이러한 생체 인식 장치와 함께, 개발자들은 보안과 사용자 경험을 향상시키기 위한 강력한 도구를 보유하고 있습니다.

사용자들은 데이터를 당신에게 맡기고 있습니다 - 보안 표준의 최고 수준을 충족하는 토큰 저장 방법을 사용하십시오.

FAQs

FAQ

iOS Keychain과 Android Keystore를 사용하여 보안 토큰 저장을 위해 왜 모바일 개발자가 사용해야 하는지 설명해 주세요?

iOS Keychain과 Android Keystore와 같은 플랫폼 네이티브 보안 저장소를 사용하는 것은 sensitive 데이터를 보호하기 위해 중요한 역할을 합니다. 이러한 도구는 built-in encryption을 제공하여 토큰이 불법적인 접근으로부터 보호되도록 합니다.그것은 또한 사용자 인증사용자 인증을 위해 저장된 데이터에 접근하기 전에 사용자 정체성을 확인하도록 요구하는 것입니다. 이로 인해 추가 보안 계층이 생깁니다.

암호화 키는 제출 불가능한 키입니다. 즉, 이 키는 장치에서 제거할 수 없으며, 이는 훨씬 더 낮은 위험이 키가 훼손되는 것을 의미합니다. 이러한 시스템은 각각의 플랫폼과 통합하기 위해 설계되어 개발자는 복잡한 암호화 프로세스를 수동으로 처리할 필요 없이 쉽게 구현할 수 있습니다. 이러한 도구를 활용하는 것은 앱 보안을 강화하는 것뿐만 아니라 개발자가 현대 보안 표준과 산업 권장 관행을 따르도록 도와줍니다. modern security standards industry-recommended practices FAQ. :::

모바일 앱에서 토큰 생명주기를 안전하게 관리하는 가장 좋은 방법은 무엇인가요?

모바일 앱에서 토큰 생명주기를 안전하게 관리하기 위해서는 개발자가 몇 가지 필수적인 관행을 따르면 됩니다. 먼저

단기 토큰 을 사용하세요.15분 이내의 유효기간을 가진 토큰과 같은 경우를 예로 들 수 있습니다. 토큰이 compromis 된 경우에 대한 악용의 창문을 최소화하기 위해 이와 같은 토큰을 사용하는 것이 좋습니다. 사용자 편의성을 유지하면서도 보안을 유지하기 위해, 사용자들이 반복적으로 로그인하지 않도록 하면서 새로운 토큰을 발급받을 수 있도록하는 refresh 토큰을 implement하는 것이 좋습니다. refresh 토큰. 이 토큰들은 사용자들이 반복적으로 로그인하지 않도록 하면서 새로운 토큰을 발급받을 수 있도록합니다.

토큰의 적절한 저장은 불법적인 접근을 방지하는 데 중요합니다. 항상 플랫폼에 특화된 보안 저장 솔루션을 사용하십시오, 예를 들어 iOS의 Keychain 또는 Android Keystore . 이들은敏感 데이터를 보호하기 위해 특별히 설계되었습니다. 또한, 토큰을 하드 코딩하거나 앱 내에서 평문으로 저장하지 마십시오. 이는 잠재적인 위협에 노출될 수 있습니다.이러한 방법을 통합함으로써, 개발자들은 모바일 앱의 토큰 관리의 보안을 강화하고 사용자들을 잠재적인 취약점으로부터 보호할 수 있습니다. :::

::: faq

커스텀 암호화로 토큰 저장을 사용할 경우에 발생할 수 있는 문제점은 무엇이며, 언제 native 솔루션보다 사용할 수 있는지?

토큰을 모바일 앱에 저장할 때, 커스텀 암호화를 사용하는 것은 양날의 검과 같습니다. 커스텀 솔루션이 더 많은 제어를 제공하는 것처럼 보일 수 있지만, 이는 종종 추가적인 복잡성을 가져오고 잠재적인 보안 약점을 열어주며, 새로운 위협에 대응하기 위해 지속적인 유지보수를 필요로 합니다. 플랫폼에서 제공하는 내장 암호화 도구와 달리, 커스텀 솔루션은 광범위한 테스트, 자세한 문서화, 그리고 강력한 개발자 커뮤니티의 지원을 받지 못합니다. 이는 디버깅과 통합을 더 큰 голов아픔으로 만들 수 있습니다.

커스텀 암호화로 토큰 저장을 사용할 경우의 문제점은 무엇이며, 언제 native 솔루션보다 사용할 수 있는지?

그렇지만, 특정 데이터나 규제 요구 사항을 충족하기 위해 표준 도구가 처리할 수 없는 경우에는 사용자 지정 암호화가 피할 수 없는 상황이 있습니다. 이 경우 개발자는 표준 도구가 처리할 수 없는 경우에만 사용자 지정 암호화를 사용해야 합니다. 최선의 방법 최선의 방법을 따르면 개발자는 암호화 방법이 보안뿐만 아니라 신뢰성과 업계 표준에 부합하는지 확인할 수 있습니다. 암호화 방법 암호화 방법이 신뢰성 있고 업계 표준에 부합하는지 확인하기 위해 주의 깊게 트레이드 오프를 고려해야 합니다.

다음으로 Secure Token Storage: Best Practices for Mobile Developers

Secure Token Storage: Best Practices for Mobile Developers를 사용하여 보안 및 규정 준수를 계획하고 있습니다. Secure Token Storage: Best Practices for Mobile Developers를 사용하여 보안 및 규정 준수를 계획하고 있습니다. Secure Token Storage: Best Practices for Mobile Developers를 사용하여 보안 및 규정 준수를 계획하고 있습니다. Secure Token Storage: Best Practices for Mobile Developers를 사용하여 보안 및 규정 준수를 계획하고 있습니다. Secure Token Storage: Best Practices for Mobile Developers를 사용하여 보안 및 규정 준수를 계획하고 있습니다. Secure Token Storage: Best Practices for Mobile Developers를 사용하여 보안 및 규정 준수를 계획하고 있습니다. for the implementation detail in Compliance, Capgo Security Scanner for the product workflow in Capgo Security Scanner, Capgo Security for the product workflow in Capgo Security, and Capgo Trust Center for the product workflow in Capgo Trust Center.

Capacitor 앱에 대한 즉각적인 업데이트

웹层 버그가 활성화된 상태에서 Capgo을 통해 픽스를 배포하는 대신 앱 스토어 승인까지 기다리지 말고, 사용자는 배경에서 업데이트를 받을 수 있고 native 변경 사항은 일반적인 검토 경로를 따릅니다.

Martin의 인간 지원

시작하기

최신 뉴스

Capgo은 전문적인 모바일 앱을 만들기 위해 필요한 최고의洞察력을 제공합니다.