モバイルアプリのセキュリティにおいて、認証トークンの安全な保存は重要です。トークンはユーザーアカウント、敏感なデータ、サービスへの鍵です。漏洩すると、 身元盗難、金銭的詐欺、データ漏洩につながる可能性があります. ここでは、保護方法を紹介します:
重要なポイント:
- プラットフォーム固有のセキュア ストレージを使用する: iOS Keychain または Android Keystore などのハードウェアバックアップされたセキュリティを使用してトークンを保存します。
- リスト ストレージ: Android または iOS のようなツールを使用して、安全な暗号化を実行します。
EncryptedSharedPreferencesトークン露出を制限するCryptoKit: 短期間のトークンとリフレッシュトークンを回転させることで、リスクを軽減します。 - セキュア コミュニケーション: 常に HTTPS を使用し、証明書ピンニングを実装して、インターセプトを防止します。
- Use Platform-Native Secure StorageEncrypt Tokens at Rest
- トークンライフサイクルを管理する: 侵害から被害を最小限に抑えるために、定期的にトークンを期限切れにし、更新し、取り消す。
ストレージ方法のクイック比較:
| ストレージ方法 | セキュリティレベル | 使いやすさ | 最適な使用シナリオ |
|---|---|---|---|
| メモリ内ストレージ | 高 | 低 | 短いセッション、セキュリティが高い |
| ローカルストレージ | 低 | 高 | 非機密データ |
| セキュア クッキー | 高 | 中 | サーバーサイド コントロールを持つウェブ アプリ |
| iOS キーチェーン | 非常に高 | 中 | iOS アプリで機密情報を格納する |
| Android キーストア | __CAPGO_KEEP_0__ | __CAPGO_KEEP_0__ | Androidアプリのセキュアなデータストレージを必要とするもの |
| カスタム暗号化 | __CAPGO_KEEP_0__ | __CAPGO_KEEP_0__ | 高度なセキュリティ要件 |
まず、アプリの現在のトークンストレージ方法を調査し、ユーザーとブランドを保護するためにこれらのベストプラクティスを実装することから始めましょう。
Daniel Mayer & Drew Suarez - Faux Disk Encryption Realities of Secure Storage on Mobile Devices
セキュアなトークンストレージの基本ルール
Protecting tokens requires a layered approach to security. By combining multiple safeguards, you ensure that if one measure fails, others still protect sensitive data. For Capacitor apps, following these practices is essential for maintaining token security across platforms.
HTTPSを使用し、証明書固定を実行してください
HTTPSの暗号化は、トークンを取得する攻撃者から保護する最初の防御です。アプリとサーバー間のすべてのインタラクションはHTTPSを使用して、データを転送中の暗号化を実行し、攻撃者への露出を防ぎます。
さらに強化するには、実行してください 証明書固定。 このテクニックにより、アプリは、偽の証明書を使用しようとする場合でも、信頼されたサーバーとのみ通信することを保証します。アプリにサーバーの証明書または公開鍵をハードコードすることで、アプリとサーバー間の直接の信頼関係をestablishすることができます。
「あなたは、リモートホストのアイデンティティを相対的に確実に知りたい場合や、ホスト環境が不正な場合には、常に固定するべきです。ほとんどの場合、どちらも真実です。したがって、常に固定するべきです」というOWASPの固定チートシートの言葉 [5]
実際の例: Twitterは、Man-in-the-Middle (MitM)攻撃に遭遇した後、モバイルアプリに証明書固定を導入しました。チームは、サーバーのSSL証明書公開鍵を直接アプリに埋め込みました。ユーザーが接続したとき、アプリは固定された証明書と照合し、照合しない場合は即座に接続を中断しました。このアプローチにより、MitM攻撃が大幅に減り、プラットフォームへのユーザーの信頼が高まりました。 [5].
選択肢は 証明書固定 (完全な証明書の検証)で最大のセキュリティを実現するか、 公開鍵固定 (公開鍵のみの検証)で証明書の更新時により多くの柔軟性を実現するかを選択できます。ツールは OkHttp __CAPGO_KEEP_0__ Alamofire __CAPGO_KEEP_0__ [5].
セキュアなデータ送信を確立した後、トークン漏洩を最小限に抑えることが次のステップです。
トークン漏洩を最小限に抑える
トークン漏洩を最小限に抑えるには、トークンの有効期間と権限の範囲を制限する必要があります。考え方は簡単です。トークンが有効期間が短く、権限が少ないほど、トークンが漏洩された場合のリスクが低くなります。
- 使用する 短期間の有効期限を持つアクセストークンを使用し、有効期限が分単位で設定します。リフレッシュトークンと組み合わせて、長期間のアクセストークンをデバイスに保存せずにユーザーセッションを維持します。このアプローチでは、盗まれたトークンがすぐに無効になります。 最小限の特権原則を適用する
- __CAPGO_KEEP_0__ __CAPGO_KEEP_0__. 例えば、トークンがユーザープロファイルデータのみを読むのに必要な場合、ユーザーアカウント設定を変更したり、支払い情報にアクセスしたりする権限を付与しないでください。
- 有効 refresh token 回転, ここでは、毎回アクセストークンを要求するために使用される新しいリフレッシュトークンが発行されます。リフレッシュトークンが盗まれた場合、正当なアプリがそれを使用した後、有効期限が切れます。これにより、リスクウィンドウが削減されます。 [4].
トークンの露出を制限することで、トークンが盗まれた場合の損害の可能性が減ります。次に、暗号化により、デバイスが物理的に侵害された場合でもトークンが安全になります。
リストア中のトークンを暗号化する
リストア中の暗号化 デバイス上に保存されているトークンを保護します。デバイスが紛失、盗難、またはマルウェアによって侵害された場合でも、暗号化によりトークンが読み取れません。
現代のモバイルオペレーティングシステムでは、標準的な方法であるSharedPreferences on AndroidまたはNSUserDefaults on iOSと比較して、より信頼性の高いハードウェアバックアップストレージオプションが提供されます。 [4].
- Androidの場合: 使用
EncryptedSharedPreferences(Android 10以降で利用可能)。このツールは暗号化とキー管理を自動的に処理し、実装を簡素化し、セキュリティを向上させます。たとえば、SecureJWTStorageクラスは、安全にJWTを保存および取得できるようにします。EncryptedSharedPreferences複雑なカスタム暗号化を必要とせずに code。 - For iOS: Keychainは、ハードウェアレベルの暗号化を提供して安全なトークンを保存します。開発者は、
KeychainHelperクラスを使用してJWTトークンを管理するか、Keychainにトークンを保存する前にトークンを CryptoKit で暗号化することで、追加のセキュリティ層を追加できます。 [4].
AndroidとiOSは両方ともハードウェアバックアップされた暗号化を使用します。iOSの場合はSecure Enclave、Androidの場合はHardware Security Moduleです。これらのコンポーネントは、主なオペレーティングシステムから隔離された、トラッキングレジスタのハードウェアで暗号化キーを保存します。
最後に、明確なデータ保持ポリシーを確立してください。有効期限切れのトークンを自動的に削除し、必要なくなったときにデバイスから安全に削除するようにします。これらの慣行により、絶対に必要な限りだけトークンが保存されます。 [6].
プラットフォーム固有のトークン保存方法
各モバイルプラットフォームは、セキュリティとユーザー体験の両方のニーズを満たすように、独自のツールを提供します。これらのネイティブオプションは、HTTPS、暗号化、露出を制限するなどの基本的な慣行に基づいています。これらは、前述のものと同じです。
Android: Keystoreと EncryptedSharedPreferences

Androidデバイスでは、強力なトークン保護を提供するKeystoreシステムとEncryptedSharedPreferencesを使用できます。 Keystoreシステムでは、暗号化された鍵を保護された環境で安全に保存し、取り出しやエクスポートを防ぎます。これにより、鍵は安全な操作のみに使用できます。また、ユーザー認証を必要とする制限を追加することもできます。 Android 9 (__CAPGO_KEEP_0__ level 28)以降のデバイスでは、 StrongBox KeyMint. The Keystore securely stores cryptographic keys in a protected environment, making them difficult to extract and ensuring they remain non-exportable. This means the keys can only be used for secure operations. Additionally, you can add restrictions like requiring user authentication. For devices running Android 9 (API level 28) or later, を使用し、有効にすることができます。 EncryptedSharedPreferencesでは、キーと値のペアを安全に保存する簡単な方法を提供します。データを暗号化し、鍵を安全に管理し、__CAPGO_KEEP_0__ level 23以上をサポートします。 FEATURE_STRONGBOX_KEYSTOREArunというAndroidエンジニアは、以下のように簡単さを強調しています。 KeyGenParameterSpec.Builder.setIsStrongBoxBacked().
EncryptedSharedPreferences offers a simpler way to securely store key–value pairs. It encrypts data and securely manages keys, supporting API levels 23 and above. Arun, an Android Engineer, highlights its ease of use:
「codeで、わずか数行で」 significantly improve security by using
EncryptedSharedPreferences. It’s a powerful and easy-to-use solution for securing sensitive data in Android apps.”
For best practices, implement error handling, rotate keys every 90–180 days, and avoid storing highly sensitive data (like credit card numbers) in SharedPreferences. Such data should be processed on secure backends instead.
iOS: Keychain and Secure Enclave
On iOS, token security relies on the Keychain and Secure Enclave. The Keychain is a secure repository for sensitive data, such as passwords and tokens, using AES-256-GCM encryption. It employs a dual-key system: one key for metadata and a unique key for each stored item. Metadata keys are protected by the Secure Enclave, which caches them for faster lookups, while secret keys require a round trip to the enclave for added security. The Keychain also supports secure sharing of items among apps from the same developer, managed by the securityd daemon.
Secure EnclaveはP256キーや約4MBのセキュアストレージで保護を強化します。さらにセキュリティを強化するには、Face ID、Touch ID、またはパスコード認証を必要とする設定などを使用してAccess Control Lists (ACLs)を構成することができます。 kSecAttrAccessibleWhenUnlockedより厳密なセキュリティのために、 .whenPasscodeSetThisDeviceOnly オプションはデータをデバイスに紐付けすることで、不正アクセスのリスクを減らします。デバイスリセットやバイオメトリックロックアウトなどのエッジケースを考慮し、定期的にアプリの特権と許可を監査することをお忘れなく。
Capacitor: Secure Storage Plugin

クロスプラットフォームアプリの場合、Capacitorは Secure Storageプラグイン を提供します。このプラグインは、プラットフォーム固有のcodeを必要とせずにトークンセキュリティを簡素化します。iOSでは、プラグインはデータを暗号化されたシステムキーチェーンに保存し、Androidでは、AES in GCMモードでデータを暗号化し、Android Keystoreによって生成されたキーを使用してSharedPreferencesに保存します。Web環境では、デバッグ用途のみに使用されるため、暗号化されていない localStorage を使用します。
2025年2月、martinkasaはcapacitor-secure-storage-pluginをCapacitor v7に更新し、iOSとAndroidで文字列値のセキュアストレージをサポートしました。これらのプラグインは、ログインクレデンシャルとJSONデータの保存に適しています。ただし、ネイティブソリューションから提供されるより細かい制御を欠いています。エンタープライズレベルアプリケーションには、ネイティブオプションであるiOS Keychain ServicesやAndroid Keystore APIs、または強化されたツールである Ionic’s Identity Vault - にはより適切なものがあります。Capacitorの公式ドキュメントでは、機密データ(暗号化キーまたはセッショントークンなど)を保存するために、ネイティブのセキュアストレージを使用することを推奨しています。
ライブアップデートをCapacitorアプリに展開する場合、 Capgo Capgoのエンドツーヘンド暗号化により、セキュリティパッチやトークン管理の改善を含むアップデートが、安全に配信され、セキュリティフレームワークの完全性が維持されます。
トークンライフサイクルとセキュリティの管理
トークンを有効に管理するには、その作成、期限切れ、削除を管理する必要があります。開発者は、強力なセキュリティ対策とユーザー体験の平衡を設計する必要があります。ここでは、トークン期限切れ、削除、セキュアオーバー・ザ・エア(OTA)アップデートの戦略について説明します。これにより、トークン管理アプローチを構築できます。
トークン期限切れとリフレッシュ方法
短期間のアクセストークンと長期間のリフレッシュトークンを使用することは、安全なトークンハンドリングの重要な実践です。アクセストークンは、5-15分以内に期限切れにすることで、漏洩した場合の不正使用リスクを軽減できます。一方、リフレッシュトークンは、ユーザーが頻繁な再認証を必要とせずにセッションを維持できるように、数日または数週間有効にできます。
トークン期限切れは、APIを安全かつ効率的に管理する上で重要な役割を果たします。 [7]. 旧トークンが無効化されるトークンローテーションと組み合わせると、さらに保護層が追加されます。この方法は、以前発行されたトークンが無効化された場合に引き起こされるダメージを最小限に抑え、古いトークンの再利用などの疑わしい活動を検出するのに役立ちます。
設計するときに、リフレッシュメカニズムを設計するときは、リフレッシュプロセス中にトークンを厳密に検証するようにしてください。強制攻撃を防ぐためにレート制限を使用し、リフレッシュ要求が同時に複数の場所から送信されていることを検出するために自動監視を使用してください。セキュリティとパフォーマンスをバランスさせることが、ユーザーセッションを保護することなく、全体的なエクスペリエンスに影響を与えないようにする鍵です。
トークンの削除と無効化
トークンが有効期限切れになることは重要ですが、トークンの削除は、ユーザーログアウト、紛失したデバイス、または疑わしいセキュリティ侵害などのシナリオでは、さらにセキュリティを追加します。ステートレスJWTアクセストークンは有効期限切れになるまで有効ですが、リフレッシュトークンの管理が効果的であれば、新しいアクセストークンの発行をブロックできます。
トークンを即座に無効化することで、機密リソースへの無許可アクセスを防ぐことができます [8]トークンを即時無効化するには、削除されたトークンを追跡するサーバーサイドブラックリストを実装し、API リクエスト中にチェックすることを検討してください。さらに、Single Logout (SLO) 機能は、ユーザーが 1 つのアクションで複数の認証セッションを終了できるようにし、関連するサービス間でリフレッシュトークンを削除できます。
トークンが漏洩した場合の対応ルーチンを確実に用意することも重要です。これらのルーチンには、トークンを即時で取り消す、自動セキュリティアラートを送信する、影響を受けたユーザーにタイムリーな通知を送信する、漏洩したトークンに関連付けられたすべてのアクティブセッションを終了することが含まれます。
セキュアなトークン更新のためのOTAシステム
APIのライフサイクルと取り消し戦略を確立した後、脅威が進化するにつれてトークンセキュリティを維持するために不可欠なセキュアなオーバー・ザ・エア(OTA)更新が必要になります。OTAシステムは、ユーザーから手動で更新する必要がなく、迅速にセキュリティパッチを展開、APIキーを回転、証明書を更新、検証ロジックを改良できるようにします。
Capacitorを使用する開発者向けに、Capgoなどのツールは、AppleおよびAndroidのガイドラインに準拠したエンドツーヘンド暗号化を備えたコンプライアントなOTAソリューションを提供します。これにより、セキュリティ更新が安全にデバイスに配信され、緊急のセキュリティ脆弱性に対処するために特に有効です。
トークンセキュリティをさらに強化するには、エッジの近くで脅威を監視し、実行中の防御やその他の高度な対策を展開して、疑わしいユーザーやデバイスを即座にブロックすることができます。ただし、正当なユーザーにサービスを中断させないようにする必要があります。
トークンストレージオプションの比較: セキュリティ対易さのバランス
__CAPGO_KEEP_0__の安全性と使いやすさのバランスをとることが大切です。
__CAPGO_KEEP_0__の選択肢は、攻撃への脆弱性やユーザー体験に直接影響します。
安全性と使いやすさのトレードオフを考えてみましょう。 メモリ内ストレージと永続化ストレージ メモリ内ストレージメモリ内ストレージでは、トークンはアプリケーションメモリまたはJavaScript変数に保存されます。
これにより、トークンは、通常のXSS攻撃を使用する攻撃者にとってアクセスする機会が少なくなります。
ただし、トークンはメモリ内ストレージでは、ユーザーがページをリフレッシュしたり、新しいタブを開いたりすると消えます。 これにより、メモリ内ストレージは、ユーザーがシームレスなブラウジング体験を期待するWebアプリケーションでは、実用性が低くなります。 一方で、 [9].
永続化ストレージ [4]- メソッドは、ローカルストレージ、セッションストレージ、またはクッキーなど - ユーザーに滑らかな体験を提供します。トークンが永続化されると、ユーザーはブラウザを閉じても、後で戻ってきて、再びログインすることなく、前の状態から再開できます。
モバイルアプリケーションでCapacitorを使用している場合、 Webワーカー 別のグローバルスコープで実行されるため、セキュリティを高めながら、メモリ内ストレージと比較してユーザビリティを維持します。 [9]Webワーカーがオプションではない場合、JavaScriptクロージャーを使用してプライベートメソッドを追加することで、セキュリティの追加層を実現できます。 [9]モバイル開発者は、ネイティブセキュアストレージとカスタム暗号化の利点と欠点を比較検討する必要があります。
Keychain/Keystore vs. Custom Encryption
モバイルアプリケーションでは、 プラットフォームネイティブセキュアストレージ iOS KeychainとAndroid Keystoreなどのプラットフォームネイティブセキュアストレージは、ハードウェアバックアップされたセキュリティを提供し、トークン抽出を困難にします。
これらのネイティブツールの美しさは、シンプルさにあります。開発者は、ネイティブツールを実装するために、拡張されたcodeを書く必要がなく、また、 生体認証 と、セキュリティとユーザーコンビニエンスを向上させる集中されたクレデンシャル管理機能をサポートしています。 [10].
カスタム暗号化__CAPGO_KEEP_0__ [10]カスタム暗号化では、開発者がより制御が可能ですが、重大な課題が伴います。セキュリティは暗号化の実装とキー管理のセキュリティに依存しており、開発者は暗号化の実装とキー管理のセキュリティに十分な注意を払わなければなりません。
多くの開発者は、セキュアなシステムを作成するには多大な複雑さがあると考え過ぎています。これにより、脆弱性が生じる可能性があります。加えて、暗号化の標準は進化し続けているため、カスタムソリューションには継続的な更新とメンテナンスが必要であり、チームがこの分野で深い専門知識を持っていない場合、リソースが多く必要になります。
| セキュリティ対比表 | 保存方法 | セキュリティレベル | 使いやすさ | 実装の複雑さ |
|---|---|---|---|---|
| 最適な使用例 | メモリ内ストレージ | 高 | Low | 高セキュリティ、短いセッション |
| ローカル ストレージ | Low | High | Low | 非機密データのみ |
| セッション ストレージ | Medium | High | Low | 一時セッション データ |
| __CAPGO_KEEP_0__ | 適切な旗を設定した場合の高 | 中 | 中 | サーバーをサポートするWebアプリケーション |
| iOS Keychain | 非常に高 | 中 | 低 | iOSネイティブ/ハイブリッドアプリ |
| Android Keystore | 非常に高 | Japanese | Low | Android native/hybrid apps |
| Custom Encryption | Variable | Medium | High | Specialized security requirements |
This table highlights how platform-native storage options like Keychain and Keystore offer a strong combination of security and ease of implementation, making them ideal for mobile applications. They provide robust protection without requiring developers to master cryptography.
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.
Ultimately, your choice of token storage should align with your app’s threat model and user expectations. Applications handling sensitive data, like healthcare or financial apps, should prioritize security above all else. In contrast, consumer-facing apps might accept slightly higher risks to deliver a smoother user experience. By understanding these trade-offs, you can choose the storage method that best fits your needs.
Medium
ユーザーデータの保護を目的とした安全なトークンストレージは、技術的ベストプラクティスだけではなく、ユーザーアプリの完整性を維持するために不可欠です。 2022年の確認された侵害の81%は、弱い、再利用された、または盗まれたパスワードに関連していました [12]モバイル開発者は、強力なトークンセキュリティ対策を優先する必要があります。
ベストプラクティス概要
効果的なトークンセキュリティ計画は、複数の保護層に依存する必要があります。まず、 iOS KeychainとAndroid Keystoreなどのプラットフォームネイティブの安全なストレージを使用してください。これらはハードウェアバックアップされたセキュリティを提供します。LocalStorageまたはIndexedDBにトークンを保存しないでください
これらの方法はXSS攻撃に脆弱です。代わりに、オペレーティングシステムに組み込まれた安全なストレージオプションを使用して、制限されたアクセスを確保してください。 [2]Capacitorを使用する開発者には、ネイティブの保護を維持しながらクロスプラットフォーム機能を実現する安全なストレージプラグインが提供されます。
トークンライフサイクル管理はもう一つの重要な側面です。定期的にトークンを期限切れにし、リフレッシュトークンを回転させて、 [3]アクセストークンが要求されたときに新しいリフレッシュトークンを生成してください。
短いリフレッシュトークンライフサイクルは、盗難の場合の不正使用のリスクを減らします。 [1]. 不安全な実践を避けるために、トークンをログに記録したり、URLに埋め込んだりしないでください。 [11]. これらのステップを組み合わせると、トークン管理戦略を強化できます。
開発者向けの次のステップ
ここでは、トークンセキュリティを改善するために、これらのベストプラクティスを実行する方法を説明します。
-
トークンストレージ方法を検証してください。 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.
-
層化された認証を実装してください。 低リスクのアクションには、シンプルな方法を使用してくださいが、敏感な操作には、多要素認証(MFA)またはバイオメトリクスを要求してください。 Microsoftによると、MFAは99.9%の自動化されたサイバー攻撃をブロックできます。 ただし、ユーザー体験を考慮する必要があります。研究によると、MFAを避けるユーザーは約1/3です。 [12]OTA(オーバー・ザ・エア)更新システムを使用してください [12].
-
placeholder 安全で即時ロールアウトを実現する。 Capgo などのツールは、Capacitor アプリ向けの暗号化されたライブアップデートを可能にし、セキュリティ修正がユーザーに到達するのを妨げずにトークン安全性を確保します。
-
トークンライフサイクル管理に焦点を当ててください。 定期的な有効期限切れ、更新、削除のプロトコルは不可欠です。実装がこれらの原則を反映していることを確認して、リスクを最小限に抑えましょう。
-
認証パターンを監視してください。 不審な活動に気をつけて、脅威が進化するにつれてセキュリティ対策を調整してください。 [13]定期的なセキュリティアウディットは、開発プロセスの定期的な部分でなければなりません。後悔の念に思うことではありません。
モバイルセキュリティが進化する中でも、基本的な原則は同じです:ネイティブセキュアストレージを使用し、トークンライフサイクルを効果的に管理し、暗号化は妥協できないものです。2022年時点で、81%のスマートフォンがバイオメトリクスを備えているため、開発者はセキュリティとユーザー体験の両方を向上させる強力なツールを手に入れました。 ユーザーはあなたにデータを預けているので、トークンストレージの実践が最高のセキュリティ標準を満たしていることを確認してください。 FAQs [12]__CAPGO_KEEP_0__
__CAPGO_KEEP_1__
2022
::: faq
モバイル開発者は、iOS KeychainとAndroid Keystoreを使用した安全なトークンストレージの利点を知っていますか?
モバイルアプリ内で敏感なデータを保護する上で、プラットフォームネイティブの安全なストレージ、iOS KeychainとAndroid Keystoreを使用することは、非常に重要な役割を果たしています。これらのツールは、 組み込み暗号化を備えています。つまり、トークンは、不正アクセスから保護されます。さらに、ユーザー認証 が組み込まれています。ユーザーは、ストレージされたデータにアクセスする前に、自分のアイデンティティを確認する必要があります。これにより、セキュリティの追加レイヤーが作成されます。1 つの重要な機能は、暗号化キーが
非エクスポート可能 であることです。つまり、これらのキーは、デバイスから削除できません。これにより、キーが侵害されるリスクが大幅に低下します。さらに、これらのシステムは、プラットフォームに組み込まれているため、開発者は複雑な暗号化プロセスを手動で処理する必要がなく、容易に実装できます。これらのツールを利用することで、アプリのセキュリティが強化され、開発者は 現代のセキュリティ基準 を満たすのに役立ちます。 業界推奨の実践. :::
::: faq
モバイルアプリでトークンライフサイクルを安全に管理するためのベストプラクティスは何ですか?
モバイルアプリでトークンライフサイクルを安全に管理するには、開発者はいくつかの基本的な実践に従う必要があります。まず、 短期間のトークン, 例えば15分の有効期限を持つものを使用します。これにより、トークンが不正に利用された場合の不正利用の窓口を最小限に抑えることができます。ユーザーの便利さを維持しながらセキュリティを犠牲にしないようにするには、 リフレッシュトークンを実装します。これにより、新しいトークンを取得することなく、ユーザーが何度もログインする必要がなくなります。
トークンの適切な保存は、不正アクセスを防ぐために重要です。常にプラットフォーム固有の安全な保存ソリューションに頼り、 Keychain をiOSまたは Android Keystore. これらの機能は、敏感なデータを保護するために特に設計されています。 また、トークンをハードコードせず、またはアプリ内にテキスト形式で保持しないようにしてください。これにより、潜在的な脅威にさらされる可能性があります。
これらの実践を統合することで、開発者はモバイルアプリケーションのトークン管理のセキュリティを向上させ、ユーザーから潜在的な脆弱性を保護できます。 :::
::: faq
カスタム暗号化によるトークンストレージの課題は何でしょうか。また、ネイティブソリューションよりもカスタム暗号化を検討すべき状況は何でしょうか。
トークンをモバイルアプリケーションに保存する場合、カスタム暗号化を使用すると二重の刃になる可能性があります。カスタムソリューションが標準の暗号化ツールよりも制御が高く見えるかもしれませんが、実際には複雑さが増し、潜在的なセキュリティの欠陥を招き、常に新しい脅威に追随するために継続的なメンテナンスが必要になります。プラットフォームによって提供される組み込み暗号化ツールとは異なり、カスタムソリューションは広範なテスト、詳細なドキュメント、強力な開発者コミュニティのバックアップを欠いています。これにより、デバッグと統合が大きなハードルとなります。
ただし、カスタム暗号化は、標準ツールが満たすことができない厳格な規制要件を満たす必要がある場合や、非常に敏感なデータを扱う場合など、特定の状況では避けられない場合があります。このような場合、開発者は ベストプラクティス を遵守する必要があります。これにより、 暗号化方法 セキュリティ、信頼性、業界標準への準拠を兼ね備えています。カスタム暗号化アプローチに突入する前に、トレードオフを慎重に検討してください。 :::