ste*_*n.s 9 asp.net security cookies caching google-chrome-devtools
我使用Google Chrome开发人员工具中的审核功能检查了我们的网络应用程序.
首先我得到一个警告,表明我们正在为静态内容提供无法缓存:"以下资源明确是不可缓存的.如果可能,请考虑使用可缓存的内容".
为了解决这个问题,我将这个代码段添加到了我们的web-config中
<staticContent>
<clientCache cacheControlMode="UseMaxAge" cacheControlMaxAge="7.00:00:00" />
</staticContent>
Run Code Online (Sandbox Code Playgroud)
正如本博文中的建议: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中可能的解决方案吗?
[更新]
经过一些更多的研究,我想这可能与这个问题有关:
为什么ASP.NET在静态图像请求上形成身份验证设置cookie?
但我无法将这个难题放在一起.情况并不完全相同,而我们的应用程序可以配置为使用表单身份验证,我在使用Windows身份验证时收到警告.
看来问题确实与表单身份验证有关。对用户进行身份验证后,我们设置一个表单身份验证 cookie。该 coockie 没有设置路径,因此每次请求都会发送它,即使是静态图像。
看起来我仍然拥有之前调试会话中设置的 coockie,即使我正在测试 Windows 身份验证。
我认为最好的解决方案是为 coockie 设置一条路径,以防止它被发送以获取静态资源。不幸的是,我无法为所有服务请求定义路径,因为我们正在使用 WCF Ria 服务,并且服务具有创建运行时的虚拟路径。
目前的解决方案是仅在浏览器中设置coockie。Web 配置中更新的条目是:
<staticContent>
<clientCache cacheControlMode="UseMaxAge" cacheControlMaxAge="7.00:00:00" cacheControlCustom="private"/>
</staticContent>
Run Code Online (Sandbox Code Playgroud)
重要的部分是新的cacheControlCustom 属性。
我想,如果浏览器由多个用户共享(例如在网吧?),这仍然可能是一个安全问题,但这对于我们的项目来说不是一个有效的场景。
归档时间: |
|
查看次数: |
2841 次 |
最近记录: |