> For the complete documentation index, see [llms.txt](https://coky-t.gitbook.io/owasp-asvs-ja/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://coky-t.gitbook.io/owasp-asvs-ja/owasp-apurikshonsekyuriti-50/0x23-v14-data-protection.md).

# V14: データ保護

## 管理目標

アプリケーションはすべての使用パターンとユーザの行動を考慮することはできないため、クライアントデバイス上の機密データへの不正アクセスを制限するためのコントロールを実装する必要があります。

この章には、どのようなデータを保護する必要があるのか、どのように保護すべきなのか、実装すべき具体的なメカニズム、回避すべき落とし穴といった定義に関連する要件を含んでいます。

データ保護に関するもう一つの懸念事項は、一括抽出、変更、過度の使用です。各システムの要件は大きく異なる可能性が高いため、「異常」の判断には脅威モデルとビジネスリスクを考慮する必要があります。ASVS の観点からは、これらの問題の検出は「セキュリティログ記録とエラー処理」の章で扱われ、制限の設定は「バリデーションとビジネスロジック」の章で扱われます。

## V14.1 データ保護ドキュメント

データ保護を実現するための重要な前提条件は、どのデータを機密とみなすべきかを分類することです。機密性にはいくつかのレベルがあり、そのレベルごとに、そのレベルのデータを保護するために必要なコントロールが異なります。

さまざまなプライバシー規制や法律があり、機密性の高い個人情報の保存、使用、および転送にアプリケーションがどのようにアプローチする必要があるかに影響します。このセクションではこのような種類のデータ保護やプライバシー法と重複して説明するようなことはせず、機密データを保護するための重要な技術的留意点に焦点を当てます。地域の法律や規制を調べ、必要に応じて資格のあるプライバシーの専門家または弁護士に相談してください。

|      #     | 説明                                                                                                                                                                        | レベル |
| :--------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :-: |
| **14.1.1** | アプリケーションにより作成および処理されるすべての機密データが特定され、保護レベルに分類されている。これは Base64 や JWT 内のプレーンテキストペイロードなど、エンコードされているだけで簡単にデコードできるデータを含む。保護レベルでは、アプリケーションが準拠する必要のあるデータ保護やプライバシー規制を考慮する必要がある。    |  2  |
| **14.1.2** | 文書化された保護要件一式がすべての機密データ保護レベルにある。これには一般的な暗号化、完全性検証、リテンション、データのログ記録方法、ログ内の機密データに関するアクセス制御、データベースレベルの暗号化、プライバシー、使用されるプライバシー強化技法に関連する要件、およびその他の機密性要件を含む必要がある (ただし、これらに限定されない)。 |  2  |

## V14.2 一般的なデータ保護

このセクションにはデータの保護に関連するさまざまな実用的な要件を含みます。その多くは意図しないデータ漏洩などの特定の問題に固有のものですが、各データ項目に必要な保護レベルに基づいて保護コントロールを実装するという一般的な要件もあります。

|      #     | 説明                                                                                                                                                                                              | レベル |
| :--------: | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :-: |
| **14.2.1** | 機密データが HTTP メッセージボディまたはヘッダフィールドでのみサーバに送信され、URL とクエリ文字列には API キーやセッショントークンなどの機密データが含まれない。                                                                                                        |  1  |
| **14.2.2** | アプリケーションは機密データをロードバランサやアプリケーションキャッシュなどのサーバコンポーネントにキャッシュされないように防止している、もしくはデータを使用後に安全に削除している。                                                                                                     |  2  |
| **14.2.3** | アプリケーションの制御外で望ましくないデータ収集を防ぐために、定義された機密データは信頼できないパーティ (ユーザトラッカーなど) には送信されない。                                                                                                                     |  2  |
| **14.2.4** | 暗号化、完全性検証、保持、データのログ記録方法、ログ内の機密データへのアクセス制御、プライバシー、プライバシー強化テクノロジに関連する機密データに関するコントロールは、特定のデータの保護レベルに対するドキュメントで定義されているとおりに実装されている。                                                                  |  2  |
| **14.2.5** | そのリソースの期待されるコンテンツタイプを持ち、機密性の高い動的コンテンツを含まないレスポンスのみをキャッシュするように、キャッシュメカニズムが設定されている。存在しないファイルがアクセスされる場合、Web サーバーは有効な別のファイルを返すのではなく 404 または 302 レスポンスを返す必要がある。これにより Web Cache Deception 攻撃を防ぐことができる。 |  3  |
| **14.2.6** | アプリケーションは、アプリケーションの機能に必要な最小限の機密データのみを返している。たとえば、クレジットカード番号の一部の数字のみを返しており、番号全体は返していない。完全なデータが必要な場合は、ユーザが明示的に表示しない限り、ユーザインタフェースでマスクする必要がある。                                                       |  3  |
| **14.2.7** | 機密情報はデータ保持分類の対象となり、古くなったデータや不要なデータは、定められたスケジュールに従って、または状況に応じて自動的に削除される。                                                                                                                         |  3  |
| **14.2.8** | ユーザーが保存に同意しない限り、ユーザーが送信したファイルのメタデータから機密情報が削除されている。                                                                                                                                              |  3  |

## V14.3 クライアントサイドのデータ保護

このセクションには、アプリケーションのクライアントサイドまたはユーザエージェントサイドで、特定の方法でデータが漏洩することを防ぐための要件を含みます。

|      #     | 説明                                                                                                                                                                  | レベル |
| :--------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :-: |
| **14.3.1** | クライアントやセッションが終了した後、ブラウザ DOM などのクライアントストレージから認証データがクリアされる。'Clear-Site-Data' HTTP レスポンスヘッダフィールドで対応できるかもしれないが、セッションが終了した際にサーバ接続が利用できない場合にはクライアントサイドでもクリアできるようにする必要がある。 |  1  |
| **14.3.2** | 機密データがブラウザでキャッシュされないように、アプリケーションは十分なキャッシュ防止 HTTP レスポンスヘッダフィールド (つまり Cache-Control: no-store) を設定している。                                                               |  2  |
| **14.3.3** | ブラウザストレージ (localStorage、sessionStorage、IndexedDB、クッキーなど) に保存されるデータに、セッショントークンを除いて、機密データが含まれていない。                                                                    |  2  |

## 参考情報

詳しくは以下の情報を参照してください。

* [Consider using the Security Headers website to check security and anti-caching header fields](https://securityheaders.com/)
* [Documentation about anti-caching headers by Mozilla](https://developer.mozilla.org/en-US/docs/Web/HTTP/Caching)
* [OWASP Secure Headers project](https://owasp.org/www-project-secure-headers/)
* [OWASP Privacy Risks Project](https://owasp.org/www-project-top-10-privacy-risks/)
* [OWASP User Privacy Protection Cheat Sheet](https://cheatsheetseries.owasp.org/cheatsheets/User_Privacy_Protection_Cheat_Sheet.html)
* [Australian Privacy Principle 11 - Security of personal information](https://www.oaic.gov.au/privacy/australian-privacy-principles/australian-privacy-principles-guidelines/chapter-11-app-11-security-of-personal-information)
* [European Union General Data Protection Regulation (GDPR) overview](https://www.edps.europa.eu/data-protection_en)
* [European Union Data Protection Supervisor - Internet Privacy Engineering Network](https://www.edps.europa.eu/data-protection/ipen-internet-privacy-engineering-network_en)
* [Information on the "Clear-Site-Data" header](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Clear-Site-Data)
* [White paper on Web Cache Deception](https://www.blackhat.com/docs/us-17/wednesday/us-17-Gil-Web-Cache-Deception-Attack-wp.pdf)
