Asp.net

如何理解 google chrome 中針對 Asp.net 提供的靜態資源的安全警告

  • July 5, 2012

我使用 Google Chrome 開發人員工具中的審核功能檢查了我們的 Web 應用程序。

首先,我收到一條警告,表明我們正在為靜態內容提供不可記憶體的服務:“以下資源明確不可記憶體。如果可能,請考慮將其設為可記憶體”。

為了解決這個問題,我將此片段添加到我們的 web-config

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

正如這篇博文中所推薦的那樣:http: //blogs.msdn.com/b/carlosag/archive/2009/06/09/are-you-caching-your-images-and-scripts-iis-seo-can-tell -you.aspx

如果我現在在 google chrome 中開始新的審核,我會收到一個新警告:

以下可公開記憶體的資源包含 Set-Cookie 標頭。此安全漏洞可能導致 cookie 被多個使用者共享。

您能否解釋一下潛在的安全威脅以及 Asp.net 中可能的解決方案是什麼?

$$ Update $$

經過更多研究,我想這可能與這個問題有關:

為什麼 ASP.NET 表單身份驗證在靜態圖像請求上設置 cookie?

但我不能把拼圖放在一起。情況並不完全相同,雖然我們的應用程序可以配置為使用表單身份驗證,但我在使用 Windows 身份驗證時收到了警告。

看起來問題確實與表單身份驗證有關。在對使用者進行身份驗證後,我們設置了一個表單身份驗證 cookie。這個 cookie 沒有設置路徑,所以它會為每個請求發送,即使是靜態圖像。

即使我正在測試 Windows 身份驗證,看起來我仍然擁有前一個調試會話中設置的 coockie。

我認為最好的解決方案是為 coockie 設置一條路徑,以防止它被發送到靜態資源。不幸的是,我無法為我們所有的服務請求定義路徑,因為我們使用的是 WCF Ria 服務,並且這些服務有一個創建執行時的虛擬路徑。

目前的解決方案是僅在瀏覽器中設置 cookie。Web 配置中的更新條目是:

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

重要的部分是新的 cacheControlCustom 屬性。

我想這仍然可能是一個安全問題,如果一個瀏覽器由多個使用者共享(例如在網吧?),但這不是我們項目的有效場景。

引用自:https://stackoverflow.com/questions/11294938