使用会话状态是在asp.net中创建用户登录名和角色的不安全方式列表存储在服务器上的数据库中,当用户输入他的登录凭据时,代码隐藏程序会根据服务器验证它并设置一个值,例如Session["id"]Session["login""]以确定是否用户被授权访问某个页面。当用户尝试浏览该页面时,该页面会查看会话变量,然后根据需要重新定位用户并相应地调整其页面上的按钮。此设置的安全性如何。asp。net的内置登录和角色功能似乎限制太多,所以我尝试探索其他选项。使用Session的主要缺点是它可能会打开您的站点以出现SessionFixation漏洞。当用户到达您的站点建立会话时,可能会发现会话ID(例如,通过MITM)。此漏洞的示例步骤如下:用户到达HTTP站点,ASP.NET为他们提供会话并将会话cookie发送给用户。攻击者读取会话cookie值。用户转到登录表单(HTTPS),登录并将您的ID和登录值存储在会话中。攻击者将他们的会话cookie设置为在步骤2中截获的值。攻击者现在有一个有效的登录会话,劫持现在登录的用户。仅出于这个原因,我建议使用内置的登录和角色功能,因为在建立经过身份验证的会话之前不会设置身份验证cookie。如果您坚持使用会话方法,我建议在登录时调用Session.Abandon()以向用户授予新会话,以便他们的会话与之前的未经身份验证的会话不同。另请参阅我对这个问题的回答:https://stackoverflow.com/a/18077422/413180会话状态是一种跟踪用户的方式一种安全的登录方式。假设默认设置(进程内,基于cookie的会话),它将与表单身份验证一样安全。您获得的确切安全级别取决于您如何配置会话状态。无Cookie会话状态——这会打开一些潜在的安全漏洞(例如,用户共享包含会话ID的URL,用户截取包含带有会话ID的URL的屏幕截图等)进程外会话状态——如果使用远程会话状态服务(或用于存储会话的数据库),会话的安全性将取决于您是否正确锁定对会话状态服务或数据库的访问。也就是说,通过FormsAuth获得的内置登录和角色功能并不难扩展和构建,无需从头开始。如果需要自定义,您还可以编写自己的成员和角色提供程序。如果您需要根据用户名或角色锁定路由,这很有用,您可以直接在web.config中执行此操作。以上就是C#学习教程:使用sessionstate是一种不安全的方式在asp.net中创建用户登录和角色共享的全部内容。如果对大家有用,需要进一步了解C#学习教程,希望大家多多关注——本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: