ASP.NET Webforms – 关闭缓存,但仅针对“页面”,不针对静态内容
发布时间:2020-12-16 06:40:25 所属栏目:asp.Net 来源:网络整理
导读:对于我们的项目,我们的客户在ASP.NET Webforms 4.0应用程序中进行了“笔测试”,并发现了许多他们希望我们修复的安全问题. 到目前为止引起讨论最多的一个是发现应用程序允许缓存页面和内容,这可能会导致未经授权的用户看到他们看不到的数据(这就是“笔测试”
对于我们的项目,我们的客户在ASP.NET Webforms 4.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> </system.webServer> 但是我有点不愿意在全球范围内这样做 – 这不也会关闭应用程序的图像,Javascript和CSS文件的任何缓存吗?这可能会对网站性能产生重大负面影响 – 不是吗? 那么我可以在“介于两者之间”做些什么吗?使用它们提供的数据阻止实际的ASP.NET页面被高速缓存,但仍然保持静态内容的缓存?如果可能的话:我必须设置哪些标题来实现这一目标? 谢谢! 解决方法
如果您正在使用站点的母版页或使用扩展的Page类扩展了Page类并创建了页面,那么您可以将代码放在适当的Page_Load事件中.
Response.Cache.SetCacheability(HttpCacheability.NoCache); //Cache-Control : no-cache,Pragma : no-cache Response.Cache.SetExpires(DateTime.Now.AddDays(-1)); //Expires : date time Response.Cache.SetNoStore(); //Cache-Control : no-store Response.Cache.SetProxyMaxAge(new TimeSpan(0,0)); //Cache-Control: s-maxage=0 Response.Cache.SetValidUntilExpires(false); Response.Cache.SetRevalidation(HttpCacheRevalidation.AllCaches);//Cache-Control: must-revalidate (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
推荐文章
站长推荐
- 如何/在哪里asp.net mvc处理解码和动作方法参数
- asp.net-mvc-4 – 为什么一些Asp.Net MVC4模板需
- asp.net – 如何调试Azure 500内部服务器错误[已
- ASP.NET AJAX AsyncFileUpload UploadedComplete
- SignalR(.NET Core)中的JWT身份验证,而不在查询字
- ASP.NET C#静态变量是全局的?
- asp.net – 多个Application_Start事件触发
- asp.net-mvc – 如何将可视化设计器集成到开发过
- asp.net-mvc-3 – 淘汰赛和全球化
- asp.net – 无法加载类型’site._Default'[已
热点阅读