2012-03-22 53 views
1

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

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

这是工作,但我想禁用出于安全原因返回按钮注销(=时,有没有可用的会话了)后只。

如果我禁用缓存,用户不能使用浏览器的后退按钮同时登录。

我使用一个自定义的验证,而不是asp.net

的标准是否有安全(=没有JavaScript)可能性做到这一点?

回答

2

由于我确定您已经知道,您无法直接禁用浏览器上的“返回”按钮。

防止用户回头的唯一方法依赖于将页面设置为缓存或涉及使用JavaScript。基于这些都不适合你的事实,没有解决方案来管理这一点。我查看了多年来的许多文章,并重新搜索了几次,所有建议都使用客户端脚本或缓存。

我的建议是在你的情况下使用缓存禁用方法,并看看你的用户界面如何回应“后退”按钮,看看你是否可以对设计进行更改以使其更平滑。这可能涉及检查会话变量,或检查用户是否仍然通过身份验证,但根据您的要求,我相信您运气不佳。

总之,你将需要选择两个邪恶中的较小者。

  • 使用页面缓存将确保人们无法使用“后退”按钮,在所有不使用JavaScript - 大概是更好的安全性
  • 使用JavaScript来删除注销页面的历史将允许您以防止用户从退出后返回,但有人开启了noscript,或者有人恶意可以禁用您的控制。

你没有详细说明你想保护谁,但是如果我猜对了,而且你担心用户在注销后离开他们的电脑,但没有关闭浏览器窗口,那么Javascript真的是一个问题吗?

思考一下,这样做的人的类型是不考虑如何恶意使用信息。大概是恶意的人,已经“像坏人一样思考”,并且知道足以关闭浏览器窗口。

任何一个选项都可以通过拦截/改变http头,javascript等的恶意软件绕过,所以两者都不是100%有效。我看到的唯一区别是,javascript选项可以通过改变html在线路上传输(使用Fiddler或恶意软件等)并通过简单地禁用Javascript来打破。所以页面缓存选项为稍微有点更好的安全目的。

使用HTTPS,而不是普通的HTTP与头的方法组合提供了更多的保护,使其更有效,因为它大大增加了跨线操纵数据的困难,它不是禁用只需禁用JavaScript即可。

无论哪种方式,我认为你需要衡量你的选择,并选择其中一个。看起来很伤心,我们只能做很多事情来保护用户不受他们自己的伤害。

0

放弃注销会话的方法&检查您的数据或仪表板页面上的Session!= null,然后我认为不需要禁用Back按钮。

+0

这是行不通的。该页面仍然保存在浏览器历史记录中,即客户端,因此如果页面缓存未设置,您仍然可以回到该页面。 – David 2012-03-22 13:32:20

2

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

如果您允许我在我的机器上的浏览器中加载网页,我可以查看并保存每个页面的源代码我明白了,并捕获了与服务器之间的每一条通信。如果你想HTML渲染或JavaScript在我的机器上运行,我会看到它,并永远保持它,如果我想。

您可以通过只允许通过远程连接访问应用程序的受控机器来访问您的应用程序来控制此功能,但对于消费者应用程序来说,这可能是禁止的。

你可以然而,鼓励大多数用户使用这样的事情

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

恶意用户不会有任何问题禁用该JavaScript,或者他接受它只是将内容保存,但是这可能是最好的,你可以做。

+1

+1对于用户能够保存/打印页面的好处。我不确定,但我敢打赌,他更担心使用公共P​​C的用户,并且无法关闭浏览器窗口而不是打印信息。恶意用户打印/保存/篡改信息必须首先登录。他听起来像是在试图阻止任何人在注销后回到受保护的页面。我认为他想要保护的人的类型的示例:图书馆中的某人离开电脑而没有注销/关闭浏览器等。 – David 2012-03-22 13:29:54

+0

你是对的@DavidStratton 但是这听起来好像没有解决这个安全问题的方法?我已经看到了一个完全是我的问题的信用卡银行页面。用户已经注销,但下一个用户(在公共电脑上)可以导航并读取信息:\。 如果没有解决方案,那么Slothsberrys的解决方案听起来不错。 – 2012-03-22 13:37:01

+1

公平点。当涉及到安全问题时,有些事情可以被认为是最糟糕的,但是你对这个问题的阅读似乎是合理的。在这种情况下,不依赖客户端代码的限制似乎很奇怪。 – 2012-03-22 13:40:33

0

下面写注销按钮的脚本:

<script language="text/javascript"> 

window.history.forward(1); 

</script> 
相关问题