【问题标题】:how do i remove the security risk, due to cached version of page由于页面的缓存版本,我如何消除安全风险
【发布时间】:2010-11-14 04:42:30
【问题描述】:

请参考链接

why does the value of session variable remain even after all the code of destruction?

在上面的问题是我做的登录功能失败了,因为浏览器正在显示页面的缓存版本,我也不知道为什么能够在一定的时间限制内执行所有功能,之后它意识到它已经被缓存了!!

所以,

如何删除网站的缓存版本,

如何告诉不要在缓存中复制我的副本!!!

通过使用 c#

【问题讨论】:

    标签: c# asp.net web session-variables browser-cache


    【解决方案1】:

    您可以做的大多数事情是在您不希望浏览器缓存的页面上添加过期元标记

    <META HTTP-EQUIV="EXPIRES" CONTENT="0">
    <META HTTP-EQUIV="CACHE-CONTROL" CONTENT="No-Cache, No-Store">
    

    或者交替在 ASP.NET 中添加 Page 标签后

    <%@ OutputCache Duration="0" Location="none" NoStore="true" %>
    

    在 C# 的代码中

    Response.Cache.SetNoStore();
    Response.Cache.SetExpires(DateTime.Now);
    Response.Cache.SetCacheability(HttpCacheability.NoCache);
    

    更多信息请参考http://msdn.microsoft.com/en-us/library/06bh14hk(v=VS.100).aspx

    这里有更详细的文章http://www.mnot.net/cache_docs/

    编辑:在来自 Alxandr 的 cmets 之后更新

    【讨论】:

    • 您还拥有Cache-Control: No-Cache, No-Store。这可能是你最安全的选择。这是我发现在每个浏览器中都可以使用的那个。
    • 请提供c#方式声明,ConTENT="0"是什么意思?
    • Content="0" 表示页面内容将在加载后立即过期,并且下次将向服务器发出新请求 - 这些语句包含在第二个代码 sn-p 中。对于您 - 不允许客户端保存任何内容的特定操作 - 唯一的解决方案是使用 SSL。阅读答案中的第二个链接。大多数银行网站使用 SSL 和页面过期来防范这些漏洞。
    【解决方案2】:

    听起来您很关心客户端页面的缓存版本。如果这是真的,你有两种主要的方法来解决这个问题。您可以将 no-cache 属性添加到 HTTP 标头或页面的 META 标记。 HTTP Header 方法是recommended approach

    元标记方法

    <META HTTP-EQUIV="Pragma" CONTENT="no-cache">
    <META HTTP-EQUIV="Expires" CONTENT="-1">
    

    HTTP 标头方法

    Cache-Control: max-age=3600, must-revalidate
    

    我下面引用的链接将为您提供有关 HTTP 标头和 META 标头的大量信息。我建议您阅读它以了解选项以及查看各种语言和 HTTP 服务器的示例实现。

    【讨论】:

    • 这个年龄的单位是秒还是毫秒?
    【解决方案3】:

    甜甜圈缓存和仅服务器端缓存将解决此问题。 在孔(甜甜圈中心)中,您验证用户的登录。如果无效,则执行重定向 301 到登录页面。

    【讨论】:

      【解决方案4】:

      浏览器会在缓存中复制它。喊它不会让它消失。除非您在其他地方做愚蠢的事情,否则这不应该是安全风险。即使您确实存在阻止缓存制作副本的安全问题也无法解决问题。

      所以:您可以阻止浏览器缓存,但这不是您想要做的。浏览器仍会将网页的副本保存到硬盘驱动器中,只是不会尝试显示它。这些都不是安全问题。

      【讨论】:

      • 当然,站点总是被存储,但这并不意味着你总是想要缓存。有时为了工作,缓存应该被关闭。
      • @Alxandr,当然,但出于安全原因,OP 希望关闭缓存。那简直是一头雾水。
      • 它是一个安全层,如果客户端缓存没有充满一些笔记本电脑上的敏感页面,它会有所帮助
      • @Harry,当然。但这不是 OP 关心的问题。
      猜你喜欢
      • 1970-01-01
      • 2012-01-09
      • 1970-01-01
      • 1970-01-01
      • 2012-02-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-06-25
      相关资源
      最近更新 更多