web-dev-qa-db-ja.com

キャッシュ制御は:銀行口座などの機密情報に対して十分なキャッシュなしですか?

機密情報をウェブサイトに保存するときは、cache-control: no-storeを含めて、ブラウザにローカルシステムにその情報を保存しないように指示する必要があることをどこかで読んだことがあります。ただし、cache-control: no-cacheを使用すると、ブラウザにそのページをキャッシュしないように指示するだけだと思います。

そのため、私のセキュリティ評価の際に、APIキー、クレジットカード、銀行口座などの機密情報を含む応答でcache-control: no-cacheヘッダーのみを使用しているWebサイトに遭遇しました。

セキュリティを向上させるために、そのような応答の応答にcache-control: no-storepragma: no-cacheを含める必要がありますか、それともcache-control: no-cacheで十分ですか?

4
tester

番号、 cache-control: no-cacheは、ブラウザのキャッシュが応答データを保存するのを妨げません。使用する cache-control: no-store代わりに。

RFC 7234、セクション5.2.2.2 によれば:

「no-cache」応答ディレクティブは、オリジンサーバーでの検証が成功せずに、後続の要求を満たすために応答を使用してはならないことを示します。

「検証に成功しなかった」とは、オリジンサーバーでの検証が成功した場合に、キャッシュされた応答mayが使用されることを意味することに注意してください。 (検証プロセスについては、 セクション4.3 で説明しています。)したがって、cache-control: no-cacheは、ユーザーエージェントが応答のコンテンツを保存することを妨げません。

pragma: no-cacheも同じ理由で正しくありません。 RFC 7234、セクション5.4 を参照してください。

Cache-Controlヘッダーフィールドがリクエストに存在しない場合、キャッシュはno-cacheリクエストプラグマディレクティブが「Cache-Control:no-cache」が存在する場合と同じ効果があると見なす必要があります(セクション5.2.1を参照)。 。

対照的に、 RFC 7234、セクション5.2.2.3 は次のように述べています:

「no-store」応答ディレクティブは、キャッシュが即時の要求または応答のいずれの部分も格納してはならないことを示します。このディレクティブは、プライベートキャッシュと共有キャッシュの両方に適用されます。この場合の「保存してはいけない」とは、キャッシュが情報を意図的に不揮発性ストレージに保存してはならず、情報を転送した後、できるだけ早く揮発性ストレージから情報を削除するよう最善を尽くさなければならないことを意味します。

これはあなたが探しているものに非常に近いように聞こえます。

2
Ajedi32