ASP.Net に応答を圧縮するが、応答の Cookie は圧縮しないように指示するにはどうすればよいですか? つまり、Cookie ではなく、すべての HTML 出力です。
背景: 侵害
ブリーチ攻撃は未解決のままです。これは、シークレットを含む TLS で保護され、gzip で圧縮された応答に対して機能します。
ログインしているサイトはすべて HTTPS を有効にする必要があり、攻撃者がターゲットにする完全な秘密を持つ Cookie を応答で送り返し続けます。あなたのトークンであり、あなたになりすますことができます。
これに対する満足のいく解決策はありませんが、強力な軽減策の 1 つは、残りの応答とは別にシークレットを圧縮するか、まったく圧縮しないことです。もう 1 つは、CSRF トークンを含めることです。フォーム データを送信した結果を表示するページの場合、とにかくこれを行う必要があるため、CSRF トークンは問題なく、キャッシュはパフォーマンスの観点からそれほど重要ではありません。しかし、静的ページの場合、キャッシュできる必要があり、CSRF トークンの重みが大きくなりすぎます。
これらの応答の唯一の秘密である Cookie を圧縮しないように ASP.Net に伝えることができれば、次のようになります。
- キャッシングは、それを必要とする静的ページで機能します
- HTTPS と gzip が同時に機能し、gzip がオフになっているのはほんの少しの応答だけです。
- ブリーチは死んだ
それで、これは可能ですか?破損した応答が得られない限り、gzip ステップを実行する HttpModule のようなものでも問題ありません。
gzip 圧縮コンテキストを分離するだけの何らかのパッチまたはモジュール (BREACH に対する主な提案されたソリューション) はさらに優れていますが、それはあまりにも多くのことを要求しているように思えます。
そもそも BREACH を使用して Cookie/セッション トークンを取得できるかどうかについて、セキュリティ コミュニティ内で対立があるように思われることに注意してください。