Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc autologin和FormsAuthenticationTicket的安全问题_Asp.net Mvc_Security_Cookies_Login - Fatal编程技术网

Asp.net mvc autologin和FormsAuthenticationTicket的安全问题

Asp.net mvc autologin和FormsAuthenticationTicket的安全问题,asp.net-mvc,security,cookies,login,Asp.net Mvc,Security,Cookies,Login,我在我的MVC3网站上使用autologin 如何最好地处理此问题: 用户在自己的计算机上登录(并获得30天的cookie) 同一用户在朋友的计算机上登录(并获得30天的cookie) 现在可以在两台计算机上自动登录。用户意识到这一点并更改了密码,但他的朋友仍然可以从他的计算机自动登录,直到cookie过期 我该如何处理这件事 我当然可以设置用户密码更改的日期,并对照cookie中的日期进行检查 还是我遗漏了什么?您的登录表单上没有“记住我”复选框吗。此复选框的值将指示您是否要创建持久cooki

我在我的MVC3网站上使用autologin

如何最好地处理此问题:

用户在自己的计算机上登录(并获得30天的cookie)

同一用户在朋友的计算机上登录(并获得30天的cookie)

现在可以在两台计算机上自动登录。用户意识到这一点并更改了密码,但他的朋友仍然可以从他的计算机自动登录,直到cookie过期

我该如何处理这件事

我当然可以设置用户密码更改的日期,并对照cookie中的日期进行检查


还是我遗漏了什么?

您的登录表单上没有“记住我”复选框吗。此复选框的值将指示您是否要创建持久cookie。如果不创建持久cookie,它将在会话结束后立即过期。在这种情况下,用户可以在登录朋友的计算机时取消选中“记住我”复选框。如果他不这样做,那他就是在自找麻烦。

我知道你在说什么,但我认为你是在暗示“记住我”功能和“密码更改”功能之间的关联,而实际上,这是不存在的。身份验证时获得的身份验证令牌通常与密码的值无关(即,在使用成员资格提供程序时),毕竟,您在逻辑上保持了跨会话身份验证,在这方面,它工作得很好

老实说,这听起来更像是用户行为问题,而不是技术问题。在您的用例中,有人有意识地要求浏览器允许他们在一台他们无法控制的机器上长时间保持身份验证。当然,我假设你有一个“记住我”复选框,如果你没有,你的答案就在那里


您可能还想了解的另一件事是OWASP在前10名的第3部分中所讨论的内容。此链接将为您提供一个.NET环境,但简言之,它大量讨论了减少您所描述的情况发生的机会,例如急切会话过期,禁用滑动会话,并显然让最终用户有权在会话到期时终止令牌,并随时注销。

什么是“自动登录”?@RPM1984:使用RememberMe Checkbox中设置的登录cookie绕过身份验证过程,这不是标准的asp.net forms auth库存,带有持久cookie吗?只是没听说过它叫“自动金”我想,说得对。但是,如果基于旧密码的票证在密码更改后仍然可以登录,这仍然是一个问题。您可以使用用户名和密码的组合作为密钥创建身份验证票证,因为票证在设置Cookie值之前是加密的,所以不会暴露敏感信息