ユーザーデータの取り扱いについて Capacitor アプリは、安全なストレージ、データ保護法令への準拠(例:GDPR、CCPA)、データ保護のための明確な保持ポリシーを必要とします。 GDPR CCPA このガイドでは、データ収集の最小化、機密情報の保護、権限の効果的な管理について説明します。ここでは、簡単な概要を紹介します。. データ最小化
- : 必要なアプリ機能ごとに、特定の機能に必要なデータのみを収集します。安全なストレージ
- : 暗号化のためのツールとしての「プラグインを使用します。
@capacitor/secure-storageデータ保持 - : 定義された時間制限に基づいて自動的に削除します。plugin
- ユーザー権利: ユーザーがデータを参照、削除、またはエクスポートできるようにします。
- 許可管理: 要求された許可をコンテキストに基づいて要求し、拒否された要求に対して代替を提供します。
- OTA更新: セキュアなオーバー・ザ・エア更新を実現するために使用できるツールを提供します。 Capgo.
How to use Ionic Capacitor セキュアなストレージ

データ収集の削減
プライバシー規制に準拠するために、データ収集を管理するには、データ収集の構造化されたアプローチが不可欠です。Capacitorの組み込みツールを利用して、データ収集を最小限に抑えることができます。これにより、データ収集の実践を改善するための実践的なステップを実行できます。
データ収集のレビュー
データフローの流れをマッピングし始めましょう。データの流れを視覚化するツールや、不要なデータが収集される可能性のある箇所を特定するためのツールを使用してください。データの流れを視覚化するツールや、データが本当に必要かどうかを評価するためのプライバシー影響評価ソフトウェアを使用してください。ここでは、焦点を当てるべき領域を簡単に説明します。
| データタイプ | レビューの焦点 | アクションアイテム |
|---|---|---|
| ユーザー入力 | フォームフィールドと検証 | 不要なフィールドを削除 |
| APIの呼び出し | リクエスト/レスポンス ペイロード | 不必要のデータフィールドをフィルタする |
| ストレージ | キャッシュされたデータと永続化データ | ストレージ使用量を最適化する |
| 分析 | 使用状況のトラッキング | 必要なメトリックのみを保持する |
データ収集の目標
データ収集の目的を明確にする。各データポイントは、特定の目的を果たすようにする。
// Purpose-driven data collection example
const userPreferences = {
location: "Used for local weather updates",
notification: "Needed for sending alerts"
};
If your app has a weather feature, it might only require a zip code rather than a full address. This approach ensures you’re gathering only the information necessary for core app functions[1][5].
アプリが天気機能を持っている場合、フルアドレスではなく、単に郵便番号__CAPGO_KEEP_0__を収集する必要があるかもしれません。このアプローチにより、コアアプリ機能に必要な情報のみを収集することができます。
Use validation tools to limit the amount of data collected through forms and API calls. Combine client-side validation with server-side verification to enforce these limits effectively.
セキュリティ機能をCapacitorに組み込んで、これらの制御を強化します:
- 可能な限りドロップダウンメニューを使用するのではなく、テキスト入力フィールドの代わりに。
- テキスト入力フィールドの文字数制限を設定します。
定期的なオーディットをスケジュールし、自動検出ツールを使用して、データ収集の実行とアプリの機能の意図された機能性に沿った効率的なデータ収集実践を確保します。
データセキュリティとストレージ
データ収集の境界を定義した後、ユーザー情報を保護し、データ最小化の原則に従う必要があります。
セキュアなストレージの設定
プラグインは、iOS KeychainとAndroid Keystoreなどの組み込みセキュリティ機能を使用して、敏感なデータを保護します。 @capacitor/secure-storage より大きな構造化されたデータセットの場合、 [1]@__CAPGO_KEEP_0__/__CAPGO_KEEP_1__-data-storage-sqlite @capgo/capacitor-data-storage-sqlite provides encrypted SQLite storage, and @capgo/capacitor-persistent-account 再インストールしてもアカウントの状態を保持できます。 @capgo/capacitor-privacy-screen アプリSwitcherと最近のアプリのプレビューで敏感なUIを非表示にします。
import { SecureStorage } from '@capacitor/secure-storage';
// Store sensitive data
await SecureStorage.set({
key: 'authToken',
value: 'user-specific-token'
});
// Retrieve stored data
const { value } = await SecureStorage.get({ key: 'authToken' });
データ暗号化方法
クライアントサイドの暗号化を追加することで、さらに保護することができます。ライブラリとしては CryptoJS 敏感な情報を暗号化するのに役立ちます:
// Basic encryption/decryption implementation
const encryptData = (data: string, key: string): string => {
return CryptoJS.AES.encrypt(data, key).toString();
};
暗号化鍵を定期的に交換することは、セキュリティを向上させる賢い方法です。鍵が一つでも破られても、残りのデータは安全に保たれます。 [2].
ストレージオプションの比較
データの敏感度に応じて、適切なストレージソリューションを選択する必要があります。ここでは、簡単な比較を紹介します。
| 機能 | セキュア ストレージ | ローカル ストレージ |
|---|---|---|
| セキュリティ レベル | 高 (暗号化) | ベーシック |
| 最適 | トークン、パスワード | 非機密設定 |
| パフォーマンス | 遅い (暗号化のため) | 高速アクセス |
セキュア ストレージ API は、認証トークンや個人情報などの重要な情報の保存に適した堅牢な選択です [1][4]. Its 暗号化機能 データの保存期間を指定することで、データへの制御されたアクセスが可能になります。 [2].
sbb-itb-f9944d2
データ保存期間
データの保存期間を明確に設定することで、データの最小化原則に沿ったデータ管理が可能になります。
保存期間のルール
ユーザーデータの種類ごとに、目的と感度に応じた保存期間を定義する必要があります。 Capacitor アプリ:
| データタイプ | 保存期間 | 理由 |
|---|---|---|
| __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__ |
データの有効期限を設定して、プログラムでデータを保存する方法の例です。
async function storeDataWithExpiration(key: string, value: any, retentionDays: number) {
const item = {
value: value,
expiration: Date.now() + (retentionDays * 24 * 60 * 60 * 1000)
};
await Preferences.set({ key, value: JSON.stringify(item) });
}
自動データ削除
データの自動整理は、規制遵守と手動介入の削減に役立ちます。Capacitorのバックグラウンドフェッチ機能は、このような場合に役立つ便利なツールです。
import { BackgroundFetch } from '@capacitor/background-fetch';
BackgroundFetch.registerTask({
taskId: 'data-cleanup',
delay: 3600000,
periodic: true,
requiresNetworkConnectivity: false
}, async () => {
await cleanExpiredData();
return BackgroundFetch.Result.NewData;
});
SQLiteを使用してデータを保存している場合、有効期限切れのレコードを自動的に削除するトリガーを設定できます。 ユーザー データ削除オプション ユーザーが自分のデータを管理できるようにすることは不可欠です。ここでは、実装できる2つの重要な機能を紹介します。
CREATE TRIGGER remove_expired_data
AFTER INSERT ON user_data
BEGIN
DELETE FROM user_data
WHERE expiration_date < CURRENT_TIMESTAMP;
END;
特定のデータの削除
:ユーザーのアカウントに関連付けられた特定のデータタイプを削除するようにユーザーに許可します。
- ユーザー データのエクスポート:ユーザーが保存されたデータを構造化された形式でダウンロードできるようにします。
async function deleteSpecificData(userId: string, dataType: string) {
await Preferences.remove({ key: `${userId}_${dataType}` });
if (db) {
await db.run(
'DELETE FROM user_data WHERE user_id = ? AND data_type = ?',
[userId, dataType]
);
}
}
- Automating data cleanup can help maintain compliance and reduce manual intervention.If you’re using
async function exportUserData(userId: string) {
// Gathers all user data for export
const userData = await collectUserData(userId);
return JSON.stringify(userData);
}
The French data protection authority __CAPGO_KEEP_0__ CNIL appの主な機能と調和するように保有期間を設定する必要があります。 [3]This principle is particularly relevant for Capacitor app developers and should guide your data retention strategy.
Appの許可設定
Handling app permissions carefully is key to safeguarding user data while ensuring your app functions as intended. By managing permissions properly, you can limit access to only the device features your app truly needs. Capacitor’s Permissions API offers a unified approach to managing permissions on both iOS and Android.
__CAPGO_KEEP_0__の許可設定__CAPGO_KEEP_1__は、iOSとAndroid両方で許可設定を統一的に管理するための統一されたアプローチを提供します。
Make sure the permissions you request align with your app’s data collection goals. Here’s a sample implementation for handling permission requests in a Capacitor app:
import { Permissions } from '@capacitor/core';
const permissionHandler = async (permissionType: string) => {
const status = await Permissions.query({ name: permissionType });
if (status.state === 'granted') {
return true;
}
const shouldProceed = await showExplanationDialog(
`We need ${permissionType} access to provide core functionality`
);
if (shouldProceed) {
const result = await Permissions.request({ name: permissionType });
return result.state === 'granted';
}
return false;
};
許可要求された許可があなたのアプリのデータ収集目標と一致していることを確認する必要があります。
ここでは、__CAPGO_KEEP_0__アプリの許可要求のサンプル実装を示します。
const handleDeniedPermission = async (permissionType: string) => {
const status = await Permissions.query({ name: permissionType });
if (status.state === 'denied') {
const alternatives = {
camera: 'manual photo upload',
location: 'manual address entry',
notifications: 'in-app message center'
};
showAlternativeFeature(alternatives[permissionType]);
if (status.canOpenSettings) {
offerSettingsRedirect();
}
}
};
拒否された許可の管理
ユーザーが許可要求を拒否した場合、明確な代替案とガイダンスを提供する必要があります。ここでは、例を示します。
| __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__ |
例えば、カメラアクセスを要求するのは、ユーザーが写真を撮るアクションを開始したときにのみ行うことができます。
const captureImage = async () => {
const userStartedCapture = true;
if (userStartedCapture) {
const granted = await permissionHandler('camera');
if (granted) {
await startCamera();
} else {
showUploadOption();
}
}
};
このようなタイミングの良いリクエストは、事前にリクエストするよりも受け入れ率が 50% 高くなります。 [2]. セッションをまたいだユーザーの決定を保存するために、許可状態トラッカーを維持する必要があります。
許可が取り扱われているら、セッションをまたいだユーザーの決定を保存するために、セッションをまたいだユーザーの決定を保存するために、許可状態トラッカーを維持する必要があります。
OTA Update Security
データの不正アクセスを防ぐために、OTA (Over-The-Air) のアップデートプロセスを使用する必要があります。 データの不正アクセスを防ぐために、OTA (Over-The-Air) のアップデートプロセスを使用する必要があります。, it’s crucial to use secure OTA (Over-The-Air) update processes. These updates help prevent unauthorized changes to app code, which could otherwise bypass limits on data collection.
アップデートパッケージの署名は、データ収集の制限を回避するために、不正な __CAPGO_KEEP_0__ の変更を防ぐために不可欠です。
Signing update packages is a critical step in protecting against unauthorized code changes. Here are some key measures to secure OTA updates:
| セキュリティ対策 | コンテンツ保護 |
|---|---|
| AES暗号化 | AES暗号化 |
| 配信セキュリティ | 証明書ピンニング付きのHTTPS |
| 更新の整合性 | ハッシュ検証 |
| バージョン安全性 | 署名されたバージョン番号 |
| 失敗の回復 | 即時ロールバック機能 |
Capgo 更新システム

Capgoは、CapacitorアプリのセキュアなOTA更新を自動化するセキュリティ機能を提供することで、CapacitorアプリのセキュアなOTA更新をCapgoの更新システムを使用して簡素化します。ここでは、Capgoの更新システムをアプリに使用する方法の例を示します。
import { CapacitorUpdater } from '@capgo/capacitor-updater';
const secureUpdate = async () => {
try {
const update = await CapacitorUpdater.download({
version: 'latest',
validateSignature: true
});
if (update.status === 'success') {
await CapacitorUpdater.set(update);
}
} catch (error) {
await CapacitorUpdater.rollback();
}
};
このアプローチにより、更新が検証され、安全で、失敗した場合にロールバックオプションが提供されます。
ストアポリシーへの適合
OTA更新のためにアプリストアのガイドラインに従うことは不可欠です。[1][6][7]各プラットフォームには、データ保持とセキュリティポリシーに沿った更新を確実にするために、特定の要件があります。
| プラットフォーム | 適合要件 |
|---|---|
| iOS | JavaScriptまたはアセットの更新のみ |
| Android | ユーザーの同意が必要 |
| 両方 | セキュリティチェックと適切なドキュメント |
以下は、ストアに準拠した更新の実装例です:
const compliantUpdate = async () => {
const userConsent = await requestUpdateConsent();
if (userConsent) {
await CapacitorUpdater.setUpdateConfig({
type: 'assets-only',
scope: 'ui-updates' // Updates limited to UI components
});
}
};
const preventDowngrade = async (newVersion, currentVersion) => {
const versions = await CapacitorUpdater.getVersions();
if (versions.current.buildNumber > newVersion.buildNumber) {
throw new Error('Downgrade attempt detected');
}
};
__CAPGO_KEEP_0__
__CAPGO_KEEP_0__
ユーザーデータを効果的に管理するには、次の基本戦略を組み合わせる必要があります:
- 必要なデータのみを収集する。
- プラットフォーム固有の暗号化を使用して保護する。
- データ保持期限を自動化する。
- 詳細な許可制御を設定する。
データが収集された時点から、自動的に削除されるまで、すべてのステップが組み合わさって、規制に準拠することを保証します。
__CAPGO_KEEP_0__
これらの戦略を実行するには:
- セクション2で説明されている方法を使用して、データフローのアウトレイスを実施する。
- 3 のセクションに記載されているストレージ セキュリティを強化します。
- __CAPGO_KEEP_0__ を設定して、4 のセクションに記載されている自動削除プロセスを設定します。
- 5 のセクションに記載されているパーミッション コントロールを確立して実施します。
Capgo を活用して
チームが OTA 更新を管理している場合、Capgo には、以下の取り組みに沿ったセキュリティツールが組み込まれています:
- エンドツーエンド暗号化 更新パッケージをセキュリティで保護するために使用します。
- リアルタイムモニタリング 潜在的なセキュリティ脅威に対処するために迅速にアクションを起こすために使用します。
Capacitor アプリケーションでユーザーデータを取り扱う方法について
__CAPGO_KEEP_0__ を使用している場合 Capacitor アプリケーションでユーザーデータを取り扱う方法について セキュリティとコンプライアンスの計画に役立つように接続する 暗号化 __CAPGO_KEEP_0__暗号化の実装詳細 コンプライアンス __CAPGO_KEEP_0__コンプライアンスの実装詳細 Capgo セキュリティ スキャナー Capgo セキュリティ スキャナーの製品ワークフロー Capgo セキュリティ Capgo セキュリティの製品ワークフロー Capgo トラスト センター Capgo トラスト センターの製品ワークフロー