__CAPGO_KEEP_0__ Capacitor GDPR と CCPA このガイドでは、データの収集を最小限に抑え、敏感な情報を保護し、権限の管理を効果的に行う方法を説明します。ここでは、簡単な概要をご紹介します。. データの最小限化
- : 必要なアプリの機能ごとに、収集するデータを最小限に抑えます。安全なデータの保存
- : 暗号化のためのプラグインを使用します。
@capacitor/secure-storage__CAPGO_KEEP_0__ - データ保持:定義された時間制限に基づいて自動的に削除する。
- ユーザー権限:ユーザーがデータを参照、削除、またはエクスポートできるようにする。
- 許可管理:許可を要求する際に状況に応じて、拒否された要求に対する代替を提供する。
- OTA更新:Cloudflareなどのツールを使用して、安全なオーバー・ザ・エア更新を実施する。 Capgo.
:Capacitorアプリでユーザーデータを取り扱う方法 Capacitor Capacitorアプリで安全なオーバー・ザ・エア更新を実施するには、Cloudflareなどのツールを使用します。

データ収集の削減
プライバシー規制に準拠するために、データ収集を管理するための構造化されたアプローチは、データ収集を最小限に抑えるためのCapacitorの組み込みツールを活用することで、実際のステップを実施してアプリのデータ慣行を改善することが鍵です。
データ収集のレビュー
データフローの流れをマッピングし始めましょう。データの流れを視覚化するツールや、不要なデータが収集される可能性のある箇所を特定するために使用するデータの流れを視覚化ツールを使用して、不要なデータが収集される可能性のある箇所を特定することができます。プライバシー影響評価ソフトウェアは、各データが本当に必要かどうかを評価するために、各データの必要性を評価するためのガイドを提供します。ここでは、焦点を当てるべき領域を簡単に説明します。
| データタイプ | レビューの焦点 | アクションアイテム |
|---|---|---|
| ユーザー入力 | フォームフィールドと検証 | 不要なフィールドを削除 |
| API Calls | リクエスト/レスポンス ペイロード | 不要なデータ フィールドをフィルタする |
| ストレージ | キャッシュされたデータと永続化データ | ストレージ使用量を最適化する |
| 分析 | 使用状況のトラッキング | 必要なメトリクスだけを保持する |
データ収集の目標
データ収集の目的を明確にする。各データ ポイントは、特定の目的を果たすようにする必要がある。たとえば、
// 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].
データ入力コントロール
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.
Incorporate Capacitor’s security features to enhance these controls:
- 可能な限りドロップダウンメニューを使用するのではなく、フリーテキストフィールドを使用してください。
- テキスト入力フィールドの文字数制限を設定してください。
定期的なアクセス検査を実施し、自動検出ツールを使用して、データ収集の実践が効率的で、目的の機能と一致していることを確認してください。
データセキュリティとストレージ
データ収集の境界を定義した後、ユーザー情報を保護し、データ最小化の原則に従う必要があります。
セキュアなストレージの設定
プラグインは、iOS KeychainとAndroid Keystoreなどの組み込みセキュリティ機能を使用して、敏感なデータを保護します。 @capacitor/secure-storage . 大規模な構造化データセットの場合、 [1]Capacitorアプリケーションでユーザーデータを処理する方法についてのガイドです。 @capgo/capacitorデータストレージ - SQLite 暗号化されたSQLiteストレージを提供し、 @capgo/capacitor持続的なアカウント 再インストールを跨いだアカウントの状態を保存できます。 @capgo/capacitorプライバシースクリーン アプリ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();
};
暗号化キーを定期的にローテーションすることは、セキュリティを向上させる賢い方法です。この方法では、1つのキーが破壊されても、残りのデータは安全です。 [2].
ストレージオプションの比較
データの安全性に応じて適切なストレージソリューションを選択する必要があります。ここでは、簡単な比較を紹介します。
| 機能 | セキュアストレージ | ローカルストレージ |
|---|---|---|
| セキュリティレベル | 高レベル(暗号化) | 基本 |
| 最適な用途 | トークン、パスワード | 非機密な設定 |
| パフォーマンス | 遅い(暗号化による) | Faster access |
セキュアなストレージ API は、認証トークンやユーザー情報などの重要な情報の保存に適したものです。 [1][4]. の暗号化機能 は、データの保存期間に合わせて制御されたアクセスを提供します。 [2].
sbb-itb-f9944d2
データ ストレージのタイム リミット
データの保存期間を明確に設定することで、データの最小化の原則に沿った情報の保存期間を確保できます。
データ ストレージのタイム ルール
ユーザー データの異なる種類には、目的と感受性に基づいて定義された保存期間が必要です。以下に、__CAPGO_KEEP_0__ アプリのデータ保持管理のためのフレームワークが示されています。 Capacitor apps:
| __CAPGO_KEEP_1__ | 保持期間 | 理由 |
|---|---|---|
| アカウントデータ | アカウント削除または 2 年間の非活性期間まで | アカウント関連の操作のために必要 |
| 取引記録 | 7 年間 | 金融規制への適合 |
| 分析データ | 90 日間 (匿名化)、1 年間 (削除) | 機能改善のサポート |
| マーケティングのプライアシー | 利用停止またはアカウントの削除 | 同意要件に準拠 |
データの保存に期限を設定するプログラム例
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 データの保存に使用している場合、期限切れのレコードを自動的に削除するトリガーを設定できます。 ユーザーデータ削除オプション
CREATE TRIGGER remove_expired_data
AFTER INSERT ON user_data
BEGIN
DELETE FROM user_data
WHERE expiration_date < CURRENT_TIMESTAMP;
END;
ユーザーが自分のデータを管理できるツールを提供することは不可欠です。ここでは、2つの重要な機能を実装する方法を紹介します。
特定のデータの削除
- ユーザーがアカウントに関連付けられた特定のデータタイプを削除できるようにする機能を提供します。Allow users to remove certain data types tied to their account.
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]
);
}
}
- ユーザーデータのエクスポート:ユーザーが保存されたデータを構造化された形式でダウンロードできるようにする
async function exportUserData(userId: string) {
// Gathers all user data for export
const userData = await collectUserData(userId);
return JSON.stringify(userData);
}
フランス国民議会 CNIL アプリのコア機能と一致するようにデータ保持期間を設定することが重要です。 [3]. This principle is particularly relevant for Capacitor app developers and should guide your data retention strategy.
ユーザーデータを保護しながら、アプリが正しく機能するようにするには、アプリのパーミッションを慎重に管理することが重要です。
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.
アプリがデータ収集の目的に合致するパーミッションを要求するようにすることが重要です。
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;
};
パーミッションの要求の拒否
ユーザーがパーミッションの要求を拒否した場合、明確な代替案とガイダンスを提供することが重要です。
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();
}
}
};
タイミングの許可要求
許可を求めるタイミングは重要です。戦略的なタイミングで許可を求めると、ユーザーの受け入れ率が大幅に改善されます。ここでは、タイミング戦略の簡単な概要を紹介します。
| タイミング戦略 | ベストケース |
|---|---|
| 即時 | 特定の機能が必要なとき |
| 状況に応じて | 非重要な機能 |
| 初回起動 | コア機能が必要なとき |
| 遅延 | 後期のユーザー経験で |
例えば、ユーザーが写真を撮るアクションを実行したときにのみカメラへのアクセスを要求できます。
const captureImage = async () => {
const userStartedCapture = true;
if (userStartedCapture) {
const granted = await permissionHandler('camera');
if (granted) {
await startCamera();
} else {
showUploadOption();
}
}
};
状況に応じたリクエストは、事前リクエストよりも承認率が50%向上することがあります。 [2]. セッションをまたいでユーザーの決定を保存するパーミッション状態トラッカーを維持することで、Smoothなエクスペリエンスを確保できます。
パーミッションを扱ったら、特にオーバー・ザ・エア(OTA)デプロイメントの場合、セキュリティの強化に焦点を当てることができます。
OTA Update Security
アプリの更新中のデータの整合性を確保するには、セキュアなOTA(Over-The-Air)更新プロセスを使用することが重要です。これらの更新は、データ収集の制限を回避するために、不正なアプリの変更を防ぐのに役立ちます。 Update Package Signing, 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.
Security Measure
Signing update packages is a critical step in protecting against unauthorized code changes. Here are some key measures to secure OTA updates:
| __CAPGO_KEEP_0__ | __CAPGO_KEEP_0__ |
|---|---|
| コンテンツ保護 | AES暗号化 |
| 配信セキュリティ | HTTPSで証明書ピンニング |
| アップデートの整合性 | ハッシュ検証 |
| バージョン安全性 | 署名されたバージョン番号 |
| 失敗の回復 | 即時ロールバック機能 |
Capgo アップデートシステム

Capgoは、CapacitorアプリのセキュアなOTA更新を簡素化するために、自動化されたセキュリティ機能を提供します。ここでは、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');
}
};
概要
主なポイント
ユーザーデータを効果的に管理するには、次の基本戦略を組み合わせる必要があります:
- 必要なデータのみを収集する。
- プラットフォームネイティブの暗号化を使用して保護する。
- データ保持期限を自動化する。
- 詳細な権限制御を設定する。
これらのステップは、データが収集された瞬間から自動的に削除されるまで、適切なコンプライアンスを保証します。
実装手順
これらの戦略を実行するには:
- セクション2で説明されている方法を使用してデータフローの検査を行ってください。
- セクション3で説明されているストレージセキュリティを強化してください。
- セクション4に記載されている自動削除プロセスを設定してください。
- セクション5で説明されている許可制御を確立して強制してください。
チームがOTA更新を管理している場合、Capgoはこれらの取り組みに沿った組み込みセキュリティツールを提供します:
For teams managing OTA updates, Capgo offers built-in security tools that align with these efforts:
- 更新パッケージをセキュリティで保護するために使用します。 リアルタイムモニタリング
- 潜在的なセキュリティ脅威に対処するために迅速にアクションを起こすために使用します。 「__CAPGO_KEEP_0__アプリでユーザーデータを取り扱う方法」の続きを読みましょう
Keep going from How to Handle User Data in Capacitor Apps
Capacitorアプリでユーザーデータを取り扱う方法 How to Handle User Data in Capacitor Apps Capacitorアプリでユーザーデータを取り扱う方法 暗号化 暗号化の実装詳細 法的合致 法的合致の実装詳細 Capgo Security Scanner for the product workflow in Capgo Security Scanner, Capgo Security for the product workflow in Capgo Security, and Capgo Trust Center Capgo製品ワークフローについてはCapgoトラストセンターをご覧ください。