提问人:user13063200 提问时间:3/11/2023 最后编辑:Borjauser13063200 更新时间:3/18/2023 访问量:33
ASP.NET MVC3 - 关闭缓存,但仅适用于“页面”,不适用于静态内容
ASP.NET MVC3- turn off caching, but only for "pages", no for static content
问:
对于我们的一个项目,我们的客户对 ASP.NET MVC 3.0 应用程序进行了“渗透测试”,发现了许多他们希望我们修复的安全问题。
到目前为止,引起最多讨论的一个发现是,该应用程序允许缓存页面和内容,这可能会导致未经授权的用户看到他们不应该看到的数据(这就是“渗透测试”的发现,大致上是这样说的)。
建议的“修复”是通过将其添加到我的 web.config 中,将 cache-control 和 pragma HTTP 标头设置为 no-cache 以避免此类缓存:
<system.webServer>
<httpProtocol>
<customHeaders>
<add name="Cache-Control" value="no-cache, no-store, must-revalidate, private"/>
<add name="Pragma" value="no-cache"/>
<add name="Expires" value="-1"/>
</customHeaders>
</httpProtocol>
</system.webServer>
但我有点不愿意在全球范围内这样做 - 这难道不会关闭应用程序的任何图像、Javascript 和 CSS 文件缓存吗?这可能会对网站性能产生重大的负面影响 - 不是吗?
那么我可以做一些“介于两者之间”的事情吗?防止实际的 ASP.NET 页面及其呈现的数据被缓存,但仍保持静态内容的缓存?如果可能的话:我必须设置哪些标头才能实现此目的?
答:
0赞
Krishan
3/18/2023
#1
试试这个
<configuration>
<system.webServer>
<staticContent>
<clientCache cacheControlMode="DisableCache" />
</staticContent>
</system.webServer>
</configuration>
评论