asp.net – 谷歌Chrome在崩溃后恢复会话cookie,如何避免?
发布时间:2020-12-16 09:40:29 所属栏目:asp.Net 来源:网络整理
导读:在谷歌浏览器上(我在 Windows 8.1上看到这个版本35,到目前为止我没有尝试其他版本)当浏览器崩溃时(或者你只是拔掉电源线……)当你’时,你会被要求恢复上一个会话再打开它.好的功能,但它也会恢复会话cookie. 我不想在这里讨论它是否是一个bug或者不管怎么说IM
在谷歌浏览器上(我在
Windows 8.1上看到这个版本35,到目前为止我没有尝试其他版本)当浏览器崩溃时(或者你只是拔掉电源线……)当你’时,你会被要求恢复上一个会话再打开它.好的功能,但它也会恢复会话cookie.
我不想在这里讨论它是否是一个bug或者不管怎么说IMO它是一个中等的安全漏洞,因为对该机器具有物理访问权限的用户可能会“挑起”崩溃来窃取所有内容的未闭合会话(你不会要求再次登录). 最后我的问题是:网站如何避免这种情况?如果我对会话cookie使用普通的ASP.NET身份验证,我不希望它们在浏览器崩溃时存活(即使计算机重新启动!). 用户代理字符串中没有类似于进程ID的内容,并且JavaScript变量都已恢复(因此我无法存储随机种子,生成 – 例如 – 服务器端).还有其他可行的吗?会话超时将处理这个,但通常它很长,并且会有一个不安全的窗口我会消除. 解决方法
我没有找到任何我可以用作进程ID的东西,以确保Chrome没有重新启动但是有一个肮脏的解决方法:如果我设置了一个计时器(让我们说间隔为5秒)我可以检查从多少时间过去最后一刻.如果经过的时间太长,则会话已恢复并执行注销.大致类似这样(每页):
var lastTickTime = new Date(); setInterval(function () { var currentTickTime = new Date(); // Difference is arbitrary and shouldn't be too small,here I suppose // a 5 seconds timer with a maximum delay of 10 seconds. if ((currentTickTime - lastTickTime) / 1000 > 10) { // Perform logout } lastTickTime = currentTickTime; },5000); 当然,这不是一个完美的解决方案(因为恶意攻击者可能会处理这个和/或禁用JavaScript),但到目前为止,它总比没有好. 更好的解决方案的新答案非常受欢迎. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- ASP.NET入口点?
- asp.net – 命名空间’System’中不存在类型或命名空间’Li
- asp.net-mvc-3 – 部署ASP.NET MVC应用程序时IIS 7.5 403访
- asp.net-mvc-4 – 禁止从地址栏调用操作方法
- asp.net-web-api – 使用控制器上的Xml注释的ASP.NET Web A
- asp.net-mvc – 如何应用css类到mvccontrib网格
- asp.net-mvc – 如何从URL获取ID作为参数
- asp.net – SelectedValue是无效的,因为它不存在于项目列表
- asp.net-mvc – IIS 7上的ASP.net MVC返回空白页面
- asp.net – 如何强制netwtonsoft json序列化程序序列化date
推荐文章
站长推荐
- asp.net-mvc – MVC反伪造令牌如何在Web服务器重
- asp.net – IIS7:服务应用程序池“YYYYY”的进程
- asp.net-core – 如何根据ASP.NET Core中的解决方
- EFCore 5 新特性 SaveChangesInterceptor
- .net-4.0 – 从自定义IHttpHandler调用MvcHttpHa
- 谈谈在.NET Core中使用Redis和Memcached的序列化
- asp.net – asp mvc“一个有潜在危险的Request.F
- ASP.NET MVC2不在HtmlAttributes中用短划线替换下
- asp.net-mvc – 不要在JSON中序列化Entity Frame
- asp.net-core – 无法关闭asp.net 5 MVC 6站点中
热点阅读