asp.net:有没有办法在登出后“禁用”浏览器的后退按钮?

时间:2012-03-22 13:00:38

标签: asp.net session back-button

登出后有没有办法“禁用”浏览器的后退按钮?

我已经阅读了几篇帖子,现在我知道,我可以禁用缓存。 (例如ASP.NET authentication login and logout with browser back button

这是有效的,但我想出于安全原因仅在退出后禁用后退按钮(=当没有可用的会话时)。

如果我禁用缓存,则用户在登录时无法使用浏览器的后退按钮。

我正在使用自定义身份验证,而不是asp.net的标准

是否有安全(=无javascript)的可能性?

4 个答案:

答案 0 :(得分:2)

我相信你已经知道了,你不能直接禁用浏览器上的“后退”按钮。

防止用户返回的唯一方法依赖于将页面设置为缓存,或者涉及使用javascript。基于这些都不适合您的事实,没有解决方案可以解决这个问题。多年来我查看了很多文章,并多次重新搜索,所有建议都使用客户端脚本或缓存。

我的最佳建议是使用缓存禁用方法,并查看您的UI如何响应“后退”按钮,看看您是否可以对设计进行更改以使其更加平滑。这可能涉及检查会话变量,或检查用户是否仍然经过身份验证,但鉴于您的要求,我相信您运气不佳。

简而言之,你需要选择两个邪恶中较小的一个。

  • 使用页面缓存将确保人们在不使用javascript的情况下根本无法使用“后退”按钮 - 可能更好的安全性
  • 使用javascript删除注销时的页面历史记录将允许您阻止用户在注销后返回,但有些人打开了noscript,或者有人恶意可能会禁用您的控件。

您没有准确指定您要保护的对象以及来自何处,但是如果我猜对了,并且您担心退出后退出PC的用户,但没有关闭浏览器窗口那么Javascript真的是一个问题吗?

通过思考,这样做的人不会考虑如何恶意使用这些信息。可能是恶意的人已经“像个坏人一样思考”并且知道关闭浏览器窗口。

任何一个选项都可以通过拦截/修改http标头,javascript等的恶意软件来绕过,因此两者都不是真正100%有效。我看到的唯一区别是javascript选项可以通过改变html在线路上传输(使用类似Fiddler或恶意软件)和简单地禁用Javascript来打破。因此,出于安全考虑,页面缓存选项略微更好。

使用https而不是普通的http与header方法相结合提供了更多保护,使 更有效,因为它大大增加了操作的难度通过网络传输数据,并且只是通过禁用JavaScript来禁用它。

无论哪种方式,我认为您需要权衡您的选择并选择其中一个。尽管看起来很悲伤,但我们只能做很多事情来保护用户免受他们的侵害。

答案 1 :(得分:2)

可以拦截和/或禁用浏览器上运行的任何内容。发送到客户端的任何页面都可以保存:任何链接URL,内容,javascript等。

如果您允许我在我的计算机上的浏览器中加载网页,我可以查看并保存我看到的每个页面的来源,并捕获与服务器之间的每个通信。如果你想要HTML渲染或javascript在我的机器上运行,我会看到它并保留它,如果我想要的话。

您可以通过仅允许通过与应用程序运行的受控计算机的远程连接访问您的应用程序来控制此操作,但对于消费者应用程序,这可能是禁止的。

但是,你可以用这样的东西阻止大多数用户

function logout(){
    window.open(loggedOutPageURL)
    self.close ()
}

恶意用户在禁用此javascript时会有任何问题,或者只是在收到内容时保存内容,但这可能是您可以做的最好的。

答案 2 :(得分:0)

放弃在退出时放置会话的方法&检查数据或仪表板页面上的Session!= null然后我认为不需要禁用“后退”按钮。

答案 3 :(得分:0)

在注销按钮下面编写脚本:

<script language="text/javascript">

window.history.forward(1);

</script>