["모바일 앱 보안에서 인증 토큰을 안전하게 저장하는 것은 매우 중요합니다. 토큰은 사용자 계정,敏感 데이터 및 서비스의 열쇠입니다. compromisied되면 identity theft, financial fraud 및 data breaches로 이어질 수 있습니다."] ["Secure Token Storage: 모바일 개발자들을 위한 보안 토큰 저장 방법"]. 여기서 보안을 위해 보호하는 방법을 설명합니다:
중요한 점:
- 플랫폼-자연적인 보안 저장소 사용: iOS Keychain 또는 Android Keystore에서 하드웨어 백업 보안을 위해 토큰을 저장합니다.
- 휴면 중에 토큰 암호화: 보안 암호화를 위해
EncryptedSharedPreferences(Android) 또는CryptoKit(iOS)와 같은 도구를 사용합니다. - 토큰 노출을 최소화: 짧은 유효 기간의 토큰과 토큰 갱신을 사용하여 위험을 줄입니다.
- 보안 통신: 항상 HTTPS를 사용하고 인증서 핑핑을 implement하여 중간자 공격을 방지합니다.
- 토큰 생명주기 관리: 자주 만료, 갱신, 취소하여 도난으로부터의 피해를 최소화합니다.
저장 방법 간단 비교:
| 저장 방법 | 보안 수준 | 사용성 | 최적의 사용 사례 |
|---|---|---|---|
| 메모리 저장 | 높음 | 낮음 | 단기 세션, 고급 보안 필요 |
| 로컬 저장 | Low | High | 비공개 데이터 |
| 안전한 쿠키 | High | 중간 | 서버 측 제어를 가진 웹 앱 |
| iOS 키체인 | 매우 높음 | 중간 | iOS 앱에서敏感 토큰 저장 |
| 안드로이드 키스토어 | 매우 높음 | 중간 | 안드로이드 앱이 보안 저장소가 필요합니다. |
| 고유 암호화 | 변수 | 중간 | 특별한 보안 요구 사항 |
__CAPGO_KEEP_0__ 앱의 현재 토큰 저장 방법을 감사하고 다음 보안 관행을 implement하여 사용자와 브랜드를 보호하세요.
Faux Disk Encryption Mobile Device의 Secure Storage Reality - Daniel Mayer & Drew Suarez
보안 토큰 저장에 대한 기본 규칙
Capacitor 앱에서 토큰 보안을 유지하기 위해 플랫폼을跨하는 보안 관행을 따르는 것은 필수적입니다.
HTTPS를 사용하고 인증서 고정 pinning을 사용하세요
HTTPS 암호화는 토큰 인출을 방지하는 첫 번째 방어입니다. 앱과 서버 간의 모든 상호 작용은 HTTPS를 사용하여 전송 중인 데이터를 암호화하여 공격자에 노출되지 않도록 해야 합니다.
이것을 더욱 강화하기 위해 인증서 고정 pinning을 implement하세요. Capacitor 앱의 경우 @capgo/capacitor-ssl-pinning 은 iOS와 Android에서 CapacitorHttp에 대한 패키지된 인증서를 고정하여 HTTPS 연결을 고정합니다. 이 기술은 앱이 신뢰할 수 있는 서버와만 통신하도록 보장하며, 누군가가 위조 인증서를 사용하더라도 앱이 신뢰할 수 있는 서버와만 통신하도록 보장합니다. 앱에서 서버의 인증서나 공개 키를 고정하여 앱과 서버 간의 직접적인 신뢰 관계를establish합니다.
“You should pin anytime you want to be relatively certain of the remote host’s identity or when operating in a hostile environment. Since one or both are almost always true, you should probably pin all the time.” – OWASP pinning cheat sheet [5]
OWASP pinning cheat sheet에서 말했듯이, 원격 호스트의 신원을 거의 확실하게 하거나 호스트 환경이 공격적인 경우에는 항상 pin하세요. 거의 항상 둘 다 true이기 때문에 항상 pin하는 것이 좋습니다. [5].
실제 예시: 트위터는 미들웨어 공격(MitM) 공격을 경험한 후 모바일 앱에 인증서 고정 pinning을 도입했습니다. 그들의 팀은 서버의 SSL 인증서 공개 키를 앱에 직접 삽입했습니다. 사용자가 연결할 때, 앱은 고정된 인증서와 인증서를 확인했습니다. 일치하지 않으면 연결을 즉시 종료했습니다. 이 접근 방식은 미들웨어 공격을 크게 줄이고 사용자에게 플랫폼에 대한 신뢰를 높였습니다. 인증서 고정 pinning(전체 인증서를 검증하는 것)을 선택할 수 있습니다. 이는 보안을 최대화하는 것입니다. 인증서 고정 pinning(전체 인증서를 검증하는 것)을 선택할 수 있습니다. 이는 보안을 최대화하는 것입니다. 공개 키 핑딩 (유효한 공개 키만 검증) 인증서 갱신 시 더 많은 유연성을 제공하기 위해. OkHttp Android Alamofire iOS [5].
Once secure transmission is in place, the next step is to minimize token exposure.
토큰 노출을 최소화하기
토큰 노출을 최소화하는 것은 토큰의 유효 기간과 권한의 범위를 제한하는 것을 포함하여 토큰의 범위를 제한하는 것을 포함합니다.
- Use 단기적인 액세스 토큰 refresh 토큰과 pair하여 사용자 세션을 유지하기 위해 장기적인 액세스 토큰을 장치에 저장하지 않도록 합니다. 이 접근 방식은 도난된 토큰이 빠르게 쓸모없는 토큰이 되도록 합니다.
- Apply the 권한 제한 원칙. 예를 들어, 사용자 프로필 데이터만 읽기 위해 필요한 토큰에 대해, 계정 설정을 수정하거나 결제 정보에 접근할 수 있는 권한을 부여하지 마십시오.
- Enable refresh 토큰 회전, 새로운 접근 토큰을 요청할 때마다 새로운 refresh 토큰이 발급되는 경우입니다. refresh 토큰이 도난당한 경우, 정당한 앱이 이를 사용한 후 유효하지 않아져 위험 창구를 줄입니다. [4].
By limiting token exposure, you reduce the chances of significant damage from a breach.
토큰 노출을 제한함으로써, 취약점이 발생한 경우에도 심각한 피해를 줄일 수 있습니다.
Next, encryption ensures tokens remain secure even if a device is physically compromised. 다음으로, 암호화는 장치가 물리적으로 손상된 경우에도 토큰이 안전하도록 보장합니다.
Encrypt Tokens at Rest [4].
- 휴지 상태에서 암호화하기: 사용
EncryptedSharedPreferences(Android 10 이상에서 사용할 수 있습니다). 이 도구는 암호화 및 키 관리를 자동으로 처리하여 구현을 단순화하고 보안을 강화합니다. 예를 들어,SecureJWTStorageclass는EncryptedSharedPreferences를 사용하여 JWT를 안전하게 저장하고 검색할 수 있습니다. 복잡한 사용자 지정 암호화 code가 필요하지 않습니다. - : iOSKeychain은 보안 토큰 저장을 위한 하드웨어 암호화 기능을 제공합니다. 개발자는
KeychainHelperclass를 사용하여 JWT 토큰을 관리하거나 Keychain에 토큰을 저장하기 전에 CryptoKit 를 사용하여 토큰을 암호화하여 보안을 강화할 수 있습니다. [4].
Android 및 iOS 모두 하드웨어 백업 암호화를 사용하여 Secure Enclave (iOS) 및 Hardware Security Module (Android)와 같은 컴포넌트를 사용합니다. 이 컴포넌트는 운영 체제의 주요 부분에서 격리된 암호화 키를 저장하는 안전한 하드웨어에 저장합니다.
마지막으로, 명확한 데이터 보존 정책을establish하세요. 만료된 토큰을 자동으로 삭제하고 장치에서 더 이상 필요하지 않은 경우敏感데이터를 안전하게 삭제하세요. 이러한 관행은 토큰이 절대 필요하지 않은 한 저장되는지 확인하기 위해 토큰이 저장되는 시간을 최소화합니다. [6].
플랫폼별 토큰 저장 방법
각 모바일 플랫폼은 보안 토큰을 보장하기 위한 자체 도구를 제공하며 보안 및 사용자 경험의 필요에 따라 맞춤화됩니다. 이러한 네이티브 옵션은 HTTPS, 암호화 및 노출 제한과 같은 핵심 관행을 기반으로 하며 이전에 논의된 바와 같습니다.
Android: Keystore 및 EncryptedSharedPreferences

Android 기기는 Keystore 시스템 및 EncryptedSharedPreferences를 통해 강력한 토큰 보호를 제공합니다. Keystore는 암호화 키를 보호된 환경에서 안전하게 저장하며 추출하기 어려우며 비.export 가능하도록 보장합니다. 따라서 키는 안전한 작업만 위해 사용할 수 있습니다. 또한 사용자 인증이 필요하도록 제한을 추가할 수 있습니다. Android 9 (__CAPGO_KEEP_0__ 레벨 28) 이상을 실행하는 기기에서 StrongBox KeyMint 는 표준 신뢰할 수 있는 실행 환경 (TEE)보다 더 큰 분리성을 제공합니다. StrongBox가 사용 가능한지 확인하려면 ,을 사용하고 활성화하세요.Android 9 (API level 28) or later StrongBox KeyMint provides even greater isolation compared to the standard Trusted Execution Environment (TEE) FEATURE_STRONGBOX_KEYSTORETo check if StrongBox is available, use KeyGenParameterSpec.Builder.setIsStrongBoxBacked().
EncryptedSharedPreferences는 더 간단한 방법을 제공하여 키–값 pairs를 안전하게 저장할 수 있습니다. 데이터를 암호화하고 키를 안전하게 관리하며, 23 이상의 API 수준을 지원합니다. 안드로이드 엔지니어인 Arun은 사용의 용이성을 강조합니다:
“code 줄만 몇 줄이면, 보안을 크게 향상시킬 수 있습니다. 그것은 매우 강력하고 사용하기 쉬운 데이터를 안드로이드 앱에서 안전하게 보호하는 솔루션입니다.” 안드로이드 앱에서 sensitive 데이터를 안전하게 보호하기 위한 최적의 방법은 다음과 같습니다. 오류 처리를 implement하고, 키를 90–180일마다 rotate하고, SharedPreferences에 highly sensitive 데이터(예: 신용 카드 번호)를 저장하지 않도록 하세요. 이러한 데이터는 보안 백엔드에서 처리되어야 합니다. iOS: Keychain과 Secure Enclave
EncryptedSharedPreferencesiOS에서 토큰 보안은 Keychain과 Secure Enclave에 의존합니다.
__CAPGO_KEEP_0__
__CAPGO_KEEP_0__ __CAPGO_KEEP_0__
__CAPGO_KEEP_0__ __CAPGO_KEEP_0__ __CAPGO_KEEP_0__ __CAPGO_KEEP_0__. Keychain은 sensitive data, such as passwords and tokens,를 위한 secure repository입니다. AES-256-GCM encryption을 사용합니다. Keychain은 dual-key system을 사용합니다: metadata key와 각 저장된 항목의 unique key. Metadata key는 Secure Enclave에 의해 보호되며, 빠른 조회를 위해 캐시되며, secret key는 enclave로의 라운드 트립이 필요합니다. securityd daemon.
Secure Enclave는 P256 key와 약 4 MB의 secure storage를 제공하여 보호를 강화합니다. Access Control Lists (ACLs)를 구성하여 Face ID, Touch ID, 또는 passcode 인증을 요구하여 보안을 강화할 수 있습니다. kSecAttrAccessibleWhenUnlocked. 더 엄격한 보안을 위해, .whenPasscodeSetThisDeviceOnly option은 데이터가 장치와 묶여 있으므로, 불법적인 접근의 위험을 줄입니다. 장치 리셋, 생체 인증 실패, 또는 기타 edge case를 처리하고, 앱 권한과 권한을 정기적으로 감사하는 것을 잊지 마십시오.
Capacitor: Secure Storage Plugin

For cross-platform apps, Capacitor offers secure storage plugins that simplify token security without requiring platform-specific code. @capgo/capacitor-data-storage-sqlite SQLite와 optional encryption을 사용하여 데이터를 지역적으로 저장합니다. @capgo/capacitor-persistent-account 인증 데이터를 재설치 시 유지합니다. iOS에서 플러그인은 암호화된 시스템 Keychain에 데이터를 저장하며, Android에서는 Android Keystore에서 키를 생성하여 AES GCM 모드 암호화를 사용하여 SharedPreferences에 데이터를 저장합니다. 웹 환경에서 플러그인은 디버깅 목적으로만 비암호화된 localStorage - 그러나 디버깅 목적으로만.
2025년 2월, martinkasa는 capacitor-secure-storage-plugin을 Capacitor v7에 업데이트하여 iOS 및 Android에서 문자열 값을 안전하게 저장하는 것을 보장했습니다. 이 플러그인은 로그인 자격 증명 및 JSON 데이터를 저장하기에 적합하지만, native 솔루션에서 제공하는 granular 제어를 제공하지 못할 수 있습니다. enterprise급 앱에 대한 고급 보안 요구 사항이 있는 경우, native 옵션인 iOS Keychain Services 및 Android Keystore APIs - 또는 향상된 도구인 Ionic의 Identity Vault -가 더 적합할 수 있습니다. capacitor의 공식 문서도 sensitive 데이터, 예를 들어 암호화 키 또는 세션 토큰과 같은 데이터에 native secure storage를 사용하는 것을 권장합니다. __CAPGO_KEEP_0__ 앱에 대한 live 업데이트를 배포할 때, 서비스들처럼 __CAPGO_KEEP_0__도 토큰 보안을 강화할 수 있습니다. __CAPGO_KEEP_0__의 end-to-end 암호화는 업데이트 - 보안 패치 또는 토큰 관리 개선과 같은 업데이트 -가 안전하게 전달되며, 앱의 보안 프레임워크의完整성을 유지합니다.’s Identity Vault - might be better suited. Capacitor’s official documentation also advises using native secure storage for sensitive data, such as encryption keys or session tokens.
Capacitor Capgo Capgo
__CAPGO_KEEP_0__
토큰 관리를 효과적으로 하려면 토큰의 생성, 만료, 그리고 취소에 대한 관리가 필요합니다. 개발자들은 보안 강도와 사용자 경험의 균형을 맞추는 시스템을 설계해야 합니다. 아래에, 토큰의 만료, 취소, 그리고 안전한 오버 더 에어(OTA) 업데이트 전략에 대해 자세히 설명합니다. 이를 통해 토큰 관리의 전반적인 접근 방식을 구축할 수 있습니다.
토큰 만료 및 갱신 방법
보안 토큰 처리의 핵심은 짧은 만료 기간의 접근 토큰과 더 오랜 만료 기간의 갱신 토큰을 함께 사용하는 것입니다. 접근 토큰은 5-15분 이내로 만료되도록 설정하여 compromisded된 경우 위험을 줄입니다. 반면, 갱신 토큰은 사용자가 자주 재인증하지 않도록 유지할 수 있는 몇 일 또는 몇 주 동안 유효합니다.
토큰 만료는 API의 보안과 효율성을 유지하는 데 중요한 역할을 합니다. [7]이와 함께 토큰 회전 - 이전에 발급된 토큰을 취소하는 방법 -을 사용하면 추가적인 보호를 제공할 수 있습니다. 이 방법은 refresh token이 compromisded된 경우에 발생하는 손상을 최소화하고, 이전에 사용된 토큰의 재사용과 같은 의심스러운 활동을 식별하는 데 도움이 될 수 있습니다.
refresh 메커니즘을 설계할 때, 토큰은 반드시 새로고침 프로세스 중에 엄격하게 검증되어야 합니다. brute force 공격에 대비하여 rate limiting을 사용하고, 여러 위치에서 동시에 새로고침 요청이 발생하는 이상 현상과 같은 것을 자동으로 감지하기 위해 모니터링을 사용하세요. 보안과 성능을 균형있게 유지하여 사용자 세션을 보호하는 동시에 전체 경험에 영향을 미치지 않도록 하세요.
__CAPGO_KEEP_0__를 취소하고 __CAPGO_KEEP_0__를 무효화합니다.
토큰 만료는 중요하지만 토큰 취소는 보안에 또 다른 층을 더해주며, 사용자 로그아웃, 잃어버린 장치, 또는 의심되는 보안 침해와 같은 시나리오에서 특히 중요합니다. 상태가 없는 JWT 접근 토큰은 만료될 때까지 유효하지만, 새 접근 토큰의 발급을 차단하는 데 효과적으로 관리하는 리프레시 토큰이 있습니다.
敏감한 자원에 대한 비인가 접근을 방지하기 위해 토큰을 신속하게 취소합니다. [8]. 즉시 토큰을 invalidate 하기 위해서는 서버 측 블랙리스트를 구현하는 것을 고려해 보세요. 이 블랙리스트는 취소된 토큰을 추적하고 API 요청 시에 확인합니다. 또한 Single Logout (SLO) 기능은 사용자가 한 번의 액션으로 여러 인증 세션을 종료할 수 있게 해주며, 연결된 서비스의 모든 관련된 리프레시 토큰이 취소됩니다.
__CAPGO_KEEP_0__의 보안 토큰이 위협받은 경우 명확한 절차를 갖추어야 합니다. 이러한 절차는 즉각적인 토큰 취소, 자동화된 보안 경고, 영향을 받은 사용자에게 신속한 알림, 위협된 토큰과 관련된 모든 활성 세션의 종료를 포함해야 합니다.
실시간 업데이트를 위한 안전한 토큰 업데이트
API 키를 회전하고 인증서를 업데이트 하며 유효성 검증 로직을 개선하는 등 보안 패치를 빠르게 배포할 수 있는 OTA 시스템은 사용자로부터 수동 업데이트를 요구하지 않습니다.
개발자들이 Capacitor을 사용하는 경우, Capgo과 같은 도구는 Apple 및 Android 지침을 준수하는 OTA 솔루션을 제공하며, 종단 간 암호화가 가능합니다. 이로 인해 보안 업데이트들은 안전하게 장치로 전달되며, Apple 및 Android 지침을 준수합니다. 이러한 시스템은 급박한 보안 취약점을 해결하는 데 특히 유용합니다.
애플리케이션과 인프라에서 발생하는 잠재적인 위협을 모니터링하여 토큰 보안을 더욱 강화하세요. 실시간으로 동작하는 방어 시스템을 OTA를 통해 배포하여 의심스러운 사용자 또는 장치에 대한 즉각적인 차단을 제공하고, 합법적인 사용자에게 서비스를 중단하지 않도록 하세요.
보안과 사용편의성 비교: 토큰 저장 옵션
애플리케이션 토큰을 안전하게 저장하는 방법을 결정할 때, 보안과 사용성을 적절하게 조절하는 것이 중요합니다. 선택한 방법은 애플리케이션의 취약점에 대한 공격 위험과 사용자 경험에 직접적인 영향을 미칠 수 있습니다. 다양한 저장 방법의 이점과 단점을 분석해 보겠습니다.
메모리 내 저장소 vs. 지속성 저장소
__CAPGO_KEEP_0__ 메모리 내 저장소 application memory 또는 JavaScript 변수에 토큰을 저장하여 매우 안전한 옵션입니다. 토큰이 파일에 기록되지 않기 때문에 영구 저장소 tradisional XSS 공격을 사용하는 공격자가 __CAPGO_KEEP_0__에 접근하는 기회가 적다.
하지만, 메모리에서 저장된 토큰은 사용자가 페이지를 새로고침하거나 새로운 탭을 열 때 사라진다. 따라서 사용자가 부드러운 브라우징 경험을 기대하는 웹 앱에서 메모리 저장은 실용적이지 않다.
반면에 영구 저장 local storage, session storage, 또는 쿠키와 같은 메서드 - 사용자가 브라우저를 닫고 나중에 돌아와도 다시 로그인하지 않고 이전에 떠놨던 곳에서 시작할 수 있도록 해준다. [9].
그러나, 이 편리함은 보안 위험과 함께 온다. 영구 저장은 XSS 공격에 더 취약하다. 이는 악성 스크립트가 로컬 또는 세션 저장소에서 토큰을 훔칠 수 있기 때문이다. [4]쿠키는 추가 구성 옵션을 제공하지만 CSRF 공격에 취약할 수 있다. 쿠키를 보안하려면 적절한 플래그와 함께 해야 한다.
Capacitor를 사용하는 모바일 앱의 경우 웹 워커 별도의 글로벌 스코프에서 실행되기 때문에 보안을 강화하면서도 사용성을 유지할 수 있다. 메모리 저장보다 더 안전하다. [9]웹 워커가 옵션으로 제공되지 않는 경우, 자바스크립트 클로저를 사용하여 추가적인 보호 계층을 추가할 수 있다. [9]모바일 개발자도 네이티브 보안 저장소와 커스텀 암호화의 장단점을 고려해야 한다.
Keychain/Keystore vs. Custom Encryption
모바일 애플리케이션에서 플랫폼-네이티브 보안 저장소 iOS Keychain과 Android Keystore와 같은 솔루션은 하드웨어 기반 보안을 제공하여 토큰 추출을 훨씬 더 어렵게 만듭니다.
이러한 네이티브 도구의 아름다움은 단순함에 있습니다. 운영 체제에 통합되어 개발자가 그들을 implement하기 위해 광범위한 code를 작성할 필요가 없습니다. 또한, 생체 인증 및 중앙 집중식 자격 증명 관리 [10].
보안과 사용자 편의성을 모두 향상시킵니다.Custom encryption [10]는 개발자에게 더 많은 제어 권한을 제공하지만 significan트한 문제점이 있습니다. 보안은 암호화가 얼마나 잘 implement되었는지와 키가 얼마나 안전하게 관리되었는지에 따라 달라집니다.
많은 개발자가 보안 시스템을 만들기 위한 복잡성을 과소 평가하여 취약점이 발생할 수 있습니다. 또한, 암호학 표준이 발전하는 것은 custom 솔루션에 대한 지속적인 업데이트와 유지 관리가 필요하므로, 이는 리소스가 많이 필요한 작업입니다. 만약 팀이 이 분야에 깊은 전문 지식을 가지고 있다면, custom 솔루션은 리소스가 많이 필요한 작업이 아닐 수 있습니다.
| 보안 vs. 사용성 비교 표 | __CAPGO_KEEP_0__ | __CAPGO_KEEP_1__ | __CAPGO_KEEP_2__ | __CAPGO_KEEP_3__ |
|---|---|---|---|---|
| __CAPGO_KEEP_4__ | __CAPGO_KEEP_5__ | __CAPGO_KEEP_6__ | __CAPGO_KEEP_7__ | __CAPGO_KEEP_8__ |
| __CAPGO_KEEP_9__ | __CAPGO_KEEP_10__ | __CAPGO_KEEP_11__ | Low | 비밀이 아닌 데이터만 |
| 세션 스토리지 | Medium | High | Low | 임시 세션 데이터 |
| 안전한 쿠키 | High (적절한 플래그와 함께) | Medium | Medium | 서버 지원 웹 애플리케이션 |
| iOS Keychain | 매우 높음 | 중간 | 낮음 | iOS native/hybrid 앱 |
| Android Keystore | 매우 높음 | 중간 | 낮음 | Android native/hybrid 앱 |
| 사용자 지정 암호화 | 변수 | __CAPGO_KEEP_0__ | __CAPGO_KEEP_1__ | 중간 |
애플리케이션에서 Keychain 및 Keystore와 같은 플랫폼 네이티브 스토리지 옵션을 사용하면 보안과 구현의 용이성의 강력한 Combination을 제공합니다. 이들은 개발자가 암호학을 마스터할 필요 없이 강력한 보호를 제공합니다.
Capacitor 개발자에게는 Keychain 및 Keystore의 하드웨어 백업 보안과 Capacitor가 제공하는 크로스 플랫폼 유연성을 결합하는 보안 스토리지 플러그인을 사용하는 것이 현명한 선택입니다.
앱의 위협 모델과 사용자 기대에 맞춰 토큰 저장 방법을 선택해야 합니다. sensitive 데이터를 처리하는 앱, 예를 들어 의료 또는 금융 앱은 보안을 우선해야 합니다. 반면 소비자 앱은 사용자 경험을 제공하기 위해 약간의 위험을 수용할 수 있습니다. 이러한 트레이드 오프를 이해하면 앱에 가장 적합한 저장 방법을 선택할 수 있습니다.
중요한 점
사용자 데이터를 안전하게 보호하는 토큰 저장은 앱의完整성을 유지하는 데 필수적인 기술적最佳 관행입니다. 2022년 81%의 확인된 침해가 약한, 재사용된 또는 도난당한 암호로 인해 발생했다는 점을 고려할 때 모바일 개발자는 강력한 토큰 보안 조치를 우선해야 합니다. [12]최선의 방법
효과적인 토큰 보안 계획은 여러 층의 보호를 기반으로합니다. 먼저 Keychain 및 Keystore와 같은 플랫폼 네이티브 스토리지 옵션을 사용하여
Key Takeaways platform-native secure storage, such as iOS Keychain and Android Keystore, which offer hardware-backed security.
보안에 취약한 LocalStorage 또는 IndexedDB와 같은 방법을 피하고 운영 체제에 내장된 보안 저장 옵션에 의존하여 접근을 제한하는 것이 좋습니다. [2]개발자가 Capacitor을 사용하는 경우, 보안 저장 플러그인은 네이티브 보호를 유지하면서도 크로스 플랫폼 기능성을 유지할 수 있는 방법을 제공합니다.
토큰의 생명 주기 관리는 또 다른 중요한 측면입니다. 액세스 토큰이 요청될 때마다 새로고침 토큰을 생성하여 새로고침 토큰의 유효 기간을 단축하여 도난 시 위험을 줄입니다. [3]만약 토큰이 도난된다면, 짧은 새로고침 토큰 유효 기간은 위험을 줄여줍니다.
만약 토큰이 도난된다면, 짧은 새로고침 토큰 유효 기간은 위험을 줄여줍니다. [1]만약 토큰이 도난된다면, 짧은 새로고침 토큰 유효 기간은 위험을 줄여줍니다. [11]만약 토큰이 도난된다면, 짧은 새로고침 토큰 유효 기간은 위험을 줄여줍니다.
만약 토큰이 도난된다면, 짧은 새로고침 토큰 유효 기간은 위험을 줄여줍니다.
만약 토큰이 도난된다면, 짧은 새로고침 토큰 유효 기간은 위험을 줄여줍니다.
-
만약 토큰이 도난된다면, 짧은 새로고침 토큰 유효 기간은 위험을 줄여줍니다.Keep signing keys confidential, sharing them only with essential services. Avoid insecure practices like logging tokens or embedding them in URLs. These steps collectively strengthen your token management strategy. Next Steps for Developers Here’s how you can act on these best practices to improve your app’s token security: Audit your token storage methods. If you’re using insecure solutions like LocalStorage, prioritize migrating to platform-native secure storage. For Capacitor apps, adopt secure storage plugins to utilize native protections effectively.
-
Implement layered authentication. Use simpler methods for low-risk actions, but require multi-factor authentication (MFA) or biometrics for sensitive operations. Microsoft에 따르면 MFA는 99.9%의 자동화된 사이버 공격을 차단할 수 있습니다. [12]그러나 사용자 경험을 고려해야합니다. 연구에 따르면 사용자 중 약 1/3이 MFA를 피하기 때문에 불편함을 이유로 MFA를 피합니다. [12].
-
OTA (over-the-air) 업데이트 시스템을 사용하여 보안 업데이트를 즉시 제공하세요. Capgo 도구를 사용하여 Capacitor 앱에 대해 암호화된 라이브 업데이트 기능을 활성화하여 보안 패치를 사용자에게 제공할 수 있습니다.
-
토큰 생명주기 관리에 집중하세요. 정기적인 만료, 갱신 및 취소 프로토콜은 필수입니다. 보안 위험을 최소화하기 위해 이러한 원칙을 반영하도록 구현하세요.
-
인증 패턴을 모니터링하세요. 이상한 활동을 감지하고 보안 대책을 적절히 조정하세요. [13]. 개발 프로세스의 일상적인 부분으로서의 보안 감사는 후회할 생각이 아닌 일이어야 합니다.
모바일 보안이 계속 진화하고 있지만, 핵심 원칙은 여전히 동일합니다: native secure storage를 사용하십시오, token lifecycle을 효과적으로 관리하십시오, 그리고 암호화는 절대 협상할 수 없습니다. 2022년 기준으로, 81%의 스마트폰이 생체 인식 장치로 장착되어 있습니다. 개발자들은 보안과 사용자 경험을 향상시키기 위한 강력한 도구를 보유하고 있습니다. [12]사용자는 여러분과 데이터를 신뢰하고 있습니다 - 여러분의 token storage 관행이 보안의 최고 수준을 충족시키는지 확인하십시오.
FAQs
::: faq
iOS Keychain과 Android Keystore를 사용하여 보안 토큰 저장을 위해 사용하는 이유는 무엇입니까?
플랫폼-네이티브 보안 저장소, 즉 iOS Keychain과 Android Keystore를 사용하는 것은 sensitive 데이터를 보호하기 위해 mobile 앱 내에서 중요한 역할을 합니다. 이 도구들은 built-in encryption를 제공하여, 토큰이 불법적인 접근으로부터 보호되며, 추가로 생체 인식 장치와 같은 보안 기능을 제공합니다.
::: faq iOS Keychain과 Android Keystore를 사용하는 것이 mobile 앱의 보안을 강화하는 데 어떻게 도움이 되나요?iOS Keychain과 Android Keystore는 built-in encryption를 제공하여, 토큰이 불법적인 접근으로부터 보호되며, 추가로 생체 인식 장치와 같은 보안 기능을 제공합니다. 사용자 인증, 사용자가 저장된 데이터에 접근하기 전에 자신의 신원을 확인해야 하는 것을 요구합니다. 이 추가 보안层를 통해 보안이 강화됩니다.
이 중 하나의 특징은 암호화 키가 제거할 수 없는키가 장치에서 제거될 수 없다는 것을 의미합니다. 이는 키가 compromized 될 위험이 크게 낮아집니다. 이러한 시스템은 각각의 플랫폼과 통합하기 위해 설계되어 개발자는 복잡한 암호화 프로세스를 수동으로 처리하는 번거로움을 피할 수 있습니다. 이러한 도구를 활용함으로써 앱 보안이 강화되며 개발자가 최신 보안 표준 을 준수하고 산업 표준. :::
을 따르도록 도와줍니다.
::: faq
모바일 앱에서 토큰 라이프 사이클을 안전하게 관리하는 가장 좋은 방법은 무엇인가요? 모바일 앱에서 토큰 라이프 사이클을 안전하게 관리하려면 개발자는 몇 가지 필수적인 방법을 따르면 됩니다. 먼저 사용하는 토큰이15분 이내의 유효 기간을 가진 토큰과 같은 것들이 있습니다. 이 토큰이 compromis 된 경우에 악용의 창구를 최소화하기 위해. 사용자 편의성을 유지하기 위해 보안을 희생하지 않고, "refresh tokens"를 implement하세요. 이 토큰들은 새로운 토큰을 발급받을 수 있도록 허용합니다. 사용자가 반복적으로 로그인하지 않도록 강요하지 않습니다. 토큰의 적절한 저장은 불법적인 접근을 방지하기 위해 중요합니다. 항상 플랫폼에 특화된 보안 저장 솔루션을 의존해야 합니다. 예를 들어, "Keychain"은 iOS 또는 "Android Keystore"은. 이들은敏感데이터를 보호하기 위해 특별히 설계되었습니다. 또한, 토큰을 하드 코딩하거나 앱 내에서 평문으로 저장하지 마십시오. 이는 잠재적인 위협에 노출될 수 있습니다. 이러한 방법을 통합하면 개발자가 모바일 앱의 토큰 관리의 보안을 강화하고 사용자를 잠재적인 취약점으로부터 보호할 수 있습니다. ::: ::: faq커스텀 암호화로 토큰 저장을 사용할 때 발생할 수 있는 문제점은 무엇이며, 언제 native 솔루션보다 고려해야 할까요?
토큰을 모바일 앱에 저장할 때, 커스텀 암호화를 사용하는 것은 두 마리 토끼를 잡는 것과 같습니다. 사용자에게 더 많은 통제를 제공하는 것처럼 보일 수 있지만, 종종 추가 복잡성을 가져오고 잠재적인 보안 약점을 열어주고, 새로운 위협에 대응하기 위해 지속적인 유지보수를 필요로 합니다. 플랫폼에서 제공하는 내장 암호화 도구와 달리, 커스텀 솔루션은 일반적으로 광범위한 테스트, 자세한 문서화, 그리고 강력한 개발자 커뮤니티의 지원을 받지 못합니다. 이로 인해 디버깅과 통합이 훨씬 더 큰 문제가 됩니다. What challenges can arise with custom encryption for token storage, and when should it be considered over native solutions? 커스텀 암호화로 토큰 저장을 사용할 때 발생할 수 있는 문제점은 무엇이며, 언제 native 솔루션보다 고려해야 할까요? When it comes to storing tokens in mobile apps, using custom encryption can be a double-edged sword. While it might seem like a tailored solution offers more control, it often brings added complexity, opens the door to potential security gaps, and demands ongoing maintenance to keep up with new threats. Unlike the built-in encryption tools provided by platforms, custom solutions typically lack extensive testing, detailed documentation, and the backing of a strong developer community. This can make debugging and integration a much bigger headache.커스텀 암호화로 토큰 저장을 사용할 때 발생할 수 있는 문제점은 무엇이며, 언제 native 솔루션보다 고려해야 할까요?
커스텀 암호화로 토큰 저장을 사용할 때 발생할 수 있는 문제점은 무엇이며, 언제 native 솔루션보다 고려해야 할까요?
커스텀 암호화로 토큰 저장을 사용할 때 발생할 수 있는 문제점은 무엇이며, 언제 native 솔루션보다 고려해야 할까요?
커스텀 암호화로 토큰 저장을 사용할 때 발생할 수 있는 문제점은 무엇이며, 언제 native 솔루션보다 고려해야 할까요?
커스텀 암호화로 토큰 저장을 사용할 때 발생할 수 있는 문제점은 무엇이며, 언제 native 솔루션보다 고려해야 할까요?
That said, there are situations where custom encryption becomes unavoidable - like when you’re dealing with extremely sensitive data or trying to meet strict regulatory requirements that standard tools just can’t handle. In these cases, it’s crucial for developers to stick to 최선의 관행 을 통해 보안 암호화 방법 은 보안뿐만 아니라 신뢰성과 업계 표준에 부합하는 보장된 암호화 방법이 되도록 하세요.
적절한 대안을 고려하기 전에 커스텀 암호화 접근 방식에 뛰어들기 전에
::: Secure Token Storage: Best Practices for Mobile Developers 에서 보안과 규정 준수 계획을 만드는 경우 Secure Token Storage: Best Practices for Mobile Developers 을 Encryption 구현 세부 사항에 대한 정보 Capgo 보안 스캐너 Capgo 보안 스캐너의 제품 워크플로에 대한 정보 Capgo 보안 Capgo 보안의 제품 워크플로에 대한 정보, 그리고 Capgo 신뢰 센터 Capgo 신뢰 센터의 제품 워크플로에 대한 정보