ASP.NET MVC3- 关闭缓存,但只针对“页面”,不针对静态内容

问题描述 投票:0回答:1

对于我们的一个项目,我们的客户对 ASP.NET MVC 3.0 应用程序进行了“渗透测试”,发现了一些他们希望我们修复的安全问题。

到目前为止引起最多讨论的是发现该应用程序允许缓存页面和内容,这可能会导致未经授权的用户看到他们不应该看到的数据(这就是“渗透测试”发现所说的,大致)。

建议的“修复”是将 cache-control 和 pragma HTTP 标头设置为 no-cache 以避免此类缓存,方法是将其添加到我的 web.config 中:

<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>

但我有点不愿意在全球范围内这样做——这是否也会关闭应用程序的任何图像、Javascript 和 CSS 文件缓存?这可能会对网站性能产生重大的负面影响 - 不是吗?

所以我可以做一些“介于两者之间”的事情吗?防止缓存实际的 ASP.NET 页面及其显示的数据,但仍然保留静态内容的缓存?如果可能的话:我必须设置哪些标头才能实现这一目标?

asp.net asp.net-mvc asp.net-mvc-4 asp.net-mvc-3
1个回答
0
投票

试试这个

<configuration>
    <system.webServer>
      <staticContent>
        <clientCache cacheControlMode="DisableCache" />
      </staticContent>
    </system.webServer>
</configuration>
© www.soinside.com 2019 - 2024. All rights reserved.