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 3 ASP.NET中直接页面访问的安全检查_Asp.net Mvc 3_Security_Authentication - Fatal编程技术网

Asp.net mvc 3 ASP.NET中直接页面访问的安全检查

Asp.net mvc 3 ASP.NET中直接页面访问的安全检查,asp.net-mvc-3,security,authentication,Asp.net Mvc 3,Security,Authentication,我有一个多用户web应用程序。如果管理员登录,将启用所有菜单。如果用户登录,则只允许使用有限的功能 当用户需要注意分配给新项目之类的任务时,管理员会向用户发送一封包含正确页面URL的邮件。然后,用户可以在没有任何凭据的情况下导航到该页面并采取必要的操作 现在的问题是——当管理员登录到系统时,触发一封发送给用户的邮件,如果他没有注销。用户单击电子邮件中的链接,在IE/Chrome的另一个选项卡或同一页面上打开页面,用户可以看到管理员可用的所有选项 虽然这不是一个以生产为中心的问题,但我正在我的客户

我有一个多用户web应用程序。如果管理员登录,将启用所有菜单。如果用户登录,则只允许使用有限的功能

当用户需要注意分配给新项目之类的任务时,管理员会向用户发送一封包含正确页面URL的邮件。然后,用户可以在没有任何凭据的情况下导航到该页面并采取必要的操作

现在的问题是——当管理员登录到系统时,触发一封发送给用户的邮件,如果他没有注销。用户单击电子邮件中的链接,在IE/Chrome的另一个选项卡或同一页面上打开页面,用户可以看到管理员可用的所有选项

虽然这不是一个以生产为中心的问题,但我正在我的客户演示中升级此安全漏洞

此外,管理员和用户可以通过适当的菜单项访问用户试图访问的页面。这限制了我在加载页面时设置一些条件


现在,我如何限制用户只查看允许他查看的选项,而不管谁已经登录?

如果最后一个登录应用程序的用户是管理员,并且没有正确注销,您可以设置会话超时以自动注销web.config中的用户:

<sessionState mode="StateServer" timeout="20" cookieless="false"/>

有关详细信息:

Cookie或HTTP身份验证将由同一浏览器的所有选项卡共享,因此,如果您在已登录时单击某个链接,您将保持登录状态

可能的解决办法:

单击应用程序中的注销,然后单击电子邮件中的链接。 将链接复制并粘贴到其他浏览器中,而不是从Chrome而不是Firefox生成链接。 在Chrome中打开一个私人选项卡,例如匿名模式,然后粘贴链接。 将默认浏览器设置为与演示启动位置不同的浏览器,以便在单击电子邮件链接时在其他位置打开。 以单独的格式生成URL,其中包含一个参数,用于通知应用程序终止任何会话并请求重新授权。例如 如果您的链接是www.example.com/task/1232,则电子邮件中的链接是www.example.com/task/1232/reauth,这将使应用程序在允许访问之前请求用户名和密码。您可以将其展开,并将URL设置为www.example.com/task/1232/user/4545,如果用户尚未以用户ID 4545登录,应用程序将仅请求重新授权。
我们的应用程序中确实存在超时。但是在演示中,我会比这个超时时间更快地导航。但是我需要证明应用程序是安全的。好的,但是如果用户没有注销,应用程序就无法知道是哪个用户在使用它。在演示模式下,您可以通过在访问私有菜单时请求管理员密码来检查用户是否为管理员。