如何理解 google chrome 中針對 Asp.net 提供的靜態資源的安全警告
我使用 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 屬性。
我想這仍然可能是一個安全問題,如果一個瀏覽器由多個使用者共享(例如在網吧?),但這不是我們項目的有效場景。