C# 使用会话状态在asp.net中创建用户登录名和角色是否不安全

C# 使用会话状态在asp.net中创建用户登录名和角色是否不安全,c#,asp.net,security,session,C#,Asp.net,Security,Session,考虑这样一种设置,即id和密码列表存储在服务器上的数据库中,当用户输入其登录凭据时,隐藏的代码会根据服务器验证它,并设置诸如Session[id]Session[login]之类的值,以确定用户是否有权访问特定页面 当用户试图浏览到某个页面时,该页面会查看会话变量,然后根据需要重新定位用户,并相应地调整页面上的按钮 此设置的安全性如何 asp.net的内置登录和角色功能似乎过于死板,因此我尝试探索其他选项。会话状态是跟踪用户登录的安全方法。假设默认的过程中设置,基于cookie的会话,它将与表单

考虑这样一种设置,即id和密码列表存储在服务器上的数据库中,当用户输入其登录凭据时,隐藏的代码会根据服务器验证它,并设置诸如Session[id]Session[login]之类的值,以确定用户是否有权访问特定页面

当用户试图浏览到某个页面时,该页面会查看会话变量,然后根据需要重新定位用户,并相应地调整页面上的按钮

此设置的安全性如何


asp.net的内置登录和角色功能似乎过于死板,因此我尝试探索其他选项。

会话状态是跟踪用户登录的安全方法。假设默认的过程中设置,基于cookie的会话,它将与表单身份验证一样安全。您使用它获得的确切安全级别将取决于您如何配置会话状态

无Cookieless会话状态-这会打开一些潜在的安全漏洞,例如,用户共享包含会话ID的url,用户使用会话ID截图包含url,等等

进程外会话状态-如果使用远程会话状态服务或数据库存储会话,会话的安全性将取决于您是否适当地锁定对会话状态服务或数据库的访问


也就是说,通过Forms Auth获得的内置登录和角色功能不太难扩展和构建,而不是从头开始。如果你需要定制的东西,你也可以。如果您需要根据用户名或角色锁定路由,这将非常有用,因为您可以在web.config中正确执行此操作。

会话状态是跟踪用户登录的安全方式。假设默认的过程中设置,基于cookie的会话,它将与表单身份验证一样安全。您使用它获得的确切安全级别将取决于您如何配置会话状态

无Cookieless会话状态-这会打开一些潜在的安全漏洞,例如,用户共享包含会话ID的url,用户使用会话ID截图包含url,等等

进程外会话状态-如果使用远程会话状态服务或数据库存储会话,会话的安全性将取决于您是否适当地锁定对会话状态服务或数据库的访问


也就是说,通过Forms Auth获得的内置登录和角色功能不太难扩展和构建,而不是从头开始。如果你需要定制的东西,你也可以。如果您需要根据用户名或角色锁定路由,这将非常有用,因为您可以在web.config中正确执行此操作。

使用会话的主要缺陷是,它可能会使您的站点出现漏洞。由于会话是在用户到达您的站点时建立的,因此会话ID可能会被发现,例如,用户

此漏洞利用的示例步骤如下:

用户到达HTTP站点时,ASP.NET会给他们一个会话并将会话cookie发送给用户。 攻击者读取会话cookie值。 用户以HTTPS登录表单登录,您的id和登录值存储在会话中。 攻击者将其会话cookie设置为步骤2中截获的值。 攻击者现在拥有一个有效的登录会话,劫持当前登录的用户。 仅出于这个原因,我建议使用内置的登录和角色功能,因为在建立经过身份验证的会话之前不会设置身份验证cookie。如果您坚持会话方法,我建议您调用session.放弃,以便在用户登录时向其授予新会话,从而使其会话与以前未经验证的会话不同


请参阅我对这个问题的回答:

使用会话的主要缺陷是它可能会使您的站点暴露漏洞。由于会话是在用户到达您的站点时建立的,因此会话ID可能会被发现,例如,用户

此漏洞利用的示例步骤如下:

用户到达HTTP站点时,ASP.NET会给他们一个会话并将会话cookie发送给用户。 攻击者读取会话cookie值。 用户以HTTPS登录表单登录,您的id和登录值存储在会话中。 攻击者将其会话cookie设置为步骤2中截获的值。 攻击者现在拥有一个有效的登录会话,劫持当前登录的用户。 仅出于这个原因,我建议使用内置的登录和角色功能,因为在建立经过身份验证的会话之前不会设置身份验证cookie。如果您坚持会话方法,我建议您调用session.放弃,以便在用户登录时向其授予新会话,从而使其会话与以前未经验证的会话不同 请看我对这个问题的回答: