asp.net – 用户角色 – 为什么不存储在会话中?
我正在将一个ASP.NET应用程序移植到MVC,并且需要存储与授权用户有关的两个项目:角色列表和可见项ID的列表,以确定用户可以看到或看不到的内容.
过去,我们已经将WSE与Web服务结合使用,这使得令人难以置信的复杂和不可能正确调试.现在我们正在挖掘我正在寻找的Web服务,以便大大简化解决方案,只需将这些内容存储在会话中.一位同事建议使用角色和会员提供商,但是考虑到这一点,我发现了一些问题: a)WSE遇到类似但不同的问题,因为它必须以非常有限的方式使用,即使编写测试也是棘手的; b)RolesProvider的唯一缓存选项是基于我们基于安全理由拒绝的cookies; c)它不引起并发症和额外的不必要的行李的结束; 所有我们想要做的,简而言之,在用户的会话中存储两个字符串变量,或者以安全的方式存储相同的东西,并在需要时引用它们.似乎是十分钟的工作,到目前为止已经进行了几天的调查,并且复合了我们现在发现的会话ID显然是伪造的问题, http://blogs.sans.org/appsecstreetfighter/2009/06/14/session-attacks-and-aspnet-part-1/ 我认为没有简单的方法来做这个非常简单的工作,但我发现不可能相信. 任何人都可以 a)提供有关如何使ASP.NET MVC会话安全的简单信息,因为我一直相信他们? b)建议另一种简单的方法来存储这两个字符串变量,用于登录的用户角色等,而不必像上述那样替换另一个复杂的噩梦? 谢谢. 解决方法
将用户角色信息存储在服务器端会话中是安全的,提供会话不能被劫持.更广泛地说,如果被认证的会话被劫持,用户角色信息的存储并不重要.
我建议不要太过信仰你链接的文章,但是从你的链接链接的2002年的老式报告是有意义的.这是我的搭档: >不接受内嵌在网址中的会话ID.>专注于消除跨站脚本的危险,即扫描所有用户提供的数据并解析可执行的java脚本.>发布完整网域的Cookie(例如myapp.mydomain.com)>在高级DNS操作符(例如,一个只允许从预设的远程IP地址进行DNS更改.>不要发出持久的会话cookie.>如果有人到达具有已经与认证会话相关联的会话ID的登录页面,则重新发布会话cookie.>更好的是,在成功认证时总是发出新的会话cookie,并放弃先前的会话. (可以在IIS中配置吗?) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |