需要帮助保护一个ASP.NET Web应用程序

3
我正在开发一个内部网站应用程序(只有员工可以登录),需要帮助确定处理单个用户对系统的权限的良好方法。
该系统本身采用C# / ASP.NET(4.0 / Webforms / Forms Authentication)/ SQL Server 2008,具有几个不同的区域,这些区域将具有不同的权限集。您可以将其视为基本的crud场景(创建、查看、更新、删除),尽管这些将适用于系统的不同方面。
(我想提一下,这不是一种CMS系统,因此我不能选择像DotNetNuke之类的开源项目。这是从头开始开发的。如果有可用的开源库,则可以使用它们。)
对于可能具有5-6个不同部分的复杂系统以及每个部分包含10-15个不同的视图/更新/删除的用户权限系统,设计良好的用户权限系统的好方法是什么?
目标是使其:
1.易于理解和设置用户(管理员)使用。 2.易于维护代码。 3.易于适应新的权限需求(不同类型或在不同位置)。
有两种方法可以考虑:
方法1:
尝试使用内置的ASP.NET角色系统定义不同的权限并从那里管理。我可以构建自定义页面来处理不同的区域并将权限集分配给用户。我相信这也允许我默认使用当前会话对象来包含用户在系统中的所有权限(HttpContext.User.IsInRole()等...)。
虽然我认为该方法可行,但我不确定它是否易于维护或适应未来需求。它似乎是更快地使其运作并开始工作的方法,但不是最好的长期解决方案。
方法2:
自己编写。在这种情况下,我将设置数据库表以存储每个应用程序部分的true/false样式权限。然后,我会检索该信息并将其放置在会话中,并基本上随时访问它以检查某人是否具有执行某些操作的权限。然后,我将构建自定义页面来管理列表等。
看起来,这种方法可能是更可维护的长期解决方案。它赋予了我更多的设置和处理方式。但是,我基本上仍在执行Roles系统在方法1中为我抽象的工作。然而,我仍然更喜欢这种方法而不是第一种方法。

最终,我不确定哪种方法是处理这个问题的最佳方式。有人能帮忙解释一下为什么上述任何一种方法都好/坏吗?或者甚至建议一个不同的替代方案,以便在一般情况下处理它的“最佳”方式。这是我在这个领域的第一个重大尝试,因此我没有太多在通过权限来“保护”应用程序方面的经验。非常感谢您的所有帮助!

2个回答

2

除非你有特殊的架构需求,否则请使用内置方法。如果您不使用内置方法,可以选择自己编写提供程序,但应遵循与内置系统相同的模板,因为它涵盖了许多安全注意事项。

甚至还有内置配置页面可用于快速和简单的用户维护。


谢谢提供这些信息!我知道使用内置系统可以降低复杂度。但我主要担心维护数百个不同的权限是不可避免的。不过,我确实看到了让系统处理实现的好处。谢谢! - Delebrin

0

我建议使用内置的方法,你总是可以编写自定义RoleProvider以匹配你的用户基础所需的角色和权限,请参考(实现RoleProvider)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接