【问题标题】:ASP.NET - Manual authentication systemASP.NET - 手动身份验证系统
【发布时间】:2011-03-01 01:08:33
【问题描述】:

我们正在开发一个 ASP.NET C# 应用程序,该应用程序将包含一个身份验证系统,用于对多个级别(用户、管理员、超级管理员等)的用户进行身份验证。

我们的想法是不使用内置的 ASP.NET 表单身份验证功能。我们的计划是为它创建一个全新的系统——基于Session 对象,SQL 数据库包含用户信息,例如用户名和密码。

我们的想法和表单身份验证功能之间有什么严重的区别吗?

我们会承担哪些安全风险?我们如何解决它们?

这是表单身份验证功能的良好替代方案吗?

【问题讨论】:

  • 我觉得你在这里有点混淆了。 ASP.NET 表单身份验证并不(严格地)暗示对存储用户数据等的位置有任何限制。通过重用现有的或实施您自己的MembershipProvider(s) 和/或RoleProvider(s),您可能无需创建全新的安全系统即可获得您想要的东西(这一点也不简单 )。我(和其他人一样)强烈建议您首先(或再次:)彻底检查现有基础架构。
  • 当然,除非这是一个学校/大学项目,其唯一目的是按照您的描述进行操作。但是你应该把它标记为“作业”......

标签: .net asp.net authentication forms-authentication session-state


【解决方案1】:

您仍然可以让 ASP.NET 为您处理身份验证 cookie 等。如果您想使用自己的数据库内容,那很好。有些人会争辩说,如果它可以适应 ASP.NET 的成员资格系统,那么就这样做(通过提供程序框架)。

如果这不合适,您可以创建自己的登录表单,但我强烈建议您至少使用 FormsAuthentication cookie 和会话管理。它已经完成,经过测试,并且在 web.config 文件中有自己的配置。那为什么还要重蹈覆辙呢?

【讨论】:

    【解决方案2】:

    我很想知道您厌恶内置会员提供程序的原因。

    看看这个链接。 http://msdn.microsoft.com/en-us/library/f1kyba5e.aspx 它解释了如何实现自定义 MembershipProvider,您可以使用它来针对任何现有/计划的数据库/存储进行身份验证,无论是基于会话的(不确定如何持久化)还是在关系数据库中。

    您对超级用户和管理员用户等的要求很好地融入了角色提供者系统。它真的很容易使用,微软的 ASP.NET 团队已经考虑了安全风险以及如何解决它们。

    阅读 scott Guthrie 的这两篇博客文章:

    http://weblogs.asp.net/scottgu/archive/2006/02/24/ASP.NET-2.0-Membership_2C00_-Roles_2C00_-Forms-Authentication_2C00_-and-Security-Resources-.aspx

    http://weblogs.asp.net/scottgu/archive/2006/01/10/435038.aspx

    【讨论】:

      【解决方案3】:

      问题是,您可以混合和匹配 Membership Provider、Forms Authentication 和 Roles Provider 来满足大多数情况。这些不适合您的需求吗?你真的需要重新发明轮子吗?

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-12-09
        • 1970-01-01
        • 1970-01-01
        • 2012-04-12
        • 1970-01-01
        • 1970-01-01
        • 2022-07-16
        相关资源
        最近更新 更多