2012-07-02 5 views
9

私は、GoogleのChromeデベロッパーツールでAudit機能を使用してWebアプリケーションを検査しました。Asp.netが提供する静的リソースのためのGoogle Chromeのセキュリティ警告を理解するには

まず、私たちが静的コンテンツをキャッシュしていないことを示す警告が表示されました。「以下のリソースは明示的にキャッシュ不可能です。可能であればキャッシュ可能にすることを検討してください。

これを修正するために私たちのウェブ-config設定にこのスニペットを追加したこのブログの記事で推奨されているように

<staticContent> 
    <clientCache cacheControlMode="UseMaxAge" cacheControlMaxAge="7.00:00:00" /> 
</staticContent> 

:私は今、GoogleのChromeで新しい監査を開始した場合 http://blogs.msdn.com/b/carlosag/archive/2009/06/09/are-you-caching-your-images-and-scripts-iis-seo-can-tell-you.aspx

、私が手新しい警告:

次の公開キャッシュ可能なリソースには、Set-Cookie ヘッダーが含まれています。このセキュリティ脆弱性により、複数のユーザーが でCookieを共有する可能性があります。

潜在的なセキュリティ上の脅威と、Asp.netの可能な解決策について教えてください。

[更新]

は、いくつかのより多くの研究の後、私は、これは、この質問に関連している可能性が推測:

Why is ASP.NET forms authentication setting cookies on a static image request?

しかし、私は一緒にパズルを置くことができません。状況はまったく同じではありませんが、私たちのアプリケーションはフォーム認証を使用するように設定できますが、Windows認証を使用している間は警告が表示されます。

+0

イベントが接続されていますか?セキュリティ上の脅威はかなり明確で、複数のユーザーが同じCookieを使用できますが、これは単一のユーザーのコンピュータでは問題ありません。 –

+0

@Ramhound少なくともクロムツールは接続があると思う。webconfigからキャッシュ命令を削除した場合は、代わりに別の警告が表示されます。以下のリソースは明示的にキャッシュ不可能です。可能であればキャッシュ可能にすることを検討してください。 –

+0

'Cache-Control'ヘッダーに値 'private'を追加すると、リソースはクライアントのみでキャッシュでき、中間マシンではキャッシュできません。この方法では、同じクッキーを異なるクライアントに返すべきではありません。 –

答えて

4

問題は実際にフォーム認証に関係していたようです。ユーザーを認証した後、私たちはフォーム認証のcoockieを設定しました。このcoockieにはパスが設定されていないため、静的な画像の場合でもリクエストごとに送信されます。

Windows認証をテストしていても、以前のデバッグセッションからcoockieを設定したようです。

私は、coockieが静的リソース用に送信されないようにするために、coockieのパスを設定することをお勧めします。残念ながら私たちはWCF Ria Servicesを使用しており、サービスには実行時に作成された仮想パスがあるため、すべてのサービス要求のパスを定義することはできません。

今のところ解決策は、ブラウザでのみcoockieを設定します。 Web設定の更新されたエントリは次のとおりです。

<staticContent> 
    <clientCache cacheControlMode="UseMaxAge" cacheControlMaxAge="7.00:00:00" cacheControlCustom="private"/> 
</staticContent> 

重要な部分は新しいcacheControlCustom属性です。

ブラウザが複数のユーザー(インターネットカフェなど)で共有されている場合でも、セキュリティ上の問題が発生する可能性がありますが、これはプロジェクトにとって有効なシナリオではありません。

関連する問題