繁体   English   中英

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

[英]Need help to Secure an ASP.NET Web Application

我正在开发一个内部Web应用程序(只有员工可以登录)并需要一些帮助来找出处理单个用户对系统权限的好方法。

系统本身位于C#/ ASP.NET(4.0 / Webforms / Forms Authentication)/ SQL Server 2008中,并且具有几个不同的区域,这些区域具有不同的权限集。 您可以在基本的crud场景(创建,查看,更新,删除)中考虑它,尽管这些场景适用于系统的不同方面。

(我想提一下这不是一种CMS系统,所以我不能选择像DotNetNuke这样的开源项目。这是从零开始开发的。如果它们可用,我可以使用开源库。 )

为复杂系统设计用户权限系统的好方法是什么,可能有5-6个不同的部分,每个部分包含10-15个不同的视图/更新/删除?

这里的目标是:

  1. 用户(管理员)可以理解使用/设置。
  2. 易于维护代码明智。
  3. 易于适应,因为需要新的权限(不同类型或不同的位置)。

有两种方法可以想到:

方法1:

尝试使用内置的ASP.NET Roles系统来定义不同的权限并从那里进行管理。 我可以构建自定义页面来处理不同的区域并为用户分配权限集。 我相信这也允许我默认使用当前会话对象来包含系统中用户的所有权限。 (HttpContext.User.IsInRole()等...)。

现在,虽然我认为这种方法可行,但我不确定它是否易于维护或适应未来的需求。 看起来它是更快速的方式来实现它并且工作但不是最好的长期。

方法2:

滚我自己。 在这个场景中,我设置了数据库表来存储应用程序每个部分的真/假样式权限。 然后,我将检索该信息并将其放入会话中,并在我需要检查某人是否有权执行某些操作时随时访问它。 然后我会构建自定义页面来管理列表等。

看来这种方法可能是更易维护的长期解决方案。 它为我提供了更多的功能以及如何处理它。 但是,我基本上还在做着Roles系统在方法1中为我抽象的工作。不过我赞成这种方法。


最后,我不确定这两种方法是否是处理此问题的最佳方法。 任何人都可以帮我解释为什么上述任何一种都是好/坏? 或者甚至建议一个不同的替代方案来处理它的“最佳”方式实际上是。 这是我在这方面的第一个主要任务,所以我没有太多的经验来尝试通过权限来“保护”这样的应用程序。 任何和所有的帮助表示赞赏!

使用内置方法,除非您有特定的架构需要。 如果您不使用内置的实现,您可以选择推出自己的提供程序实现,但是您应该遵循与内置系统相同的模板,因为它涵盖了您应该考虑的许多安全警告。

甚至还有内置的配置页面,用于快速和脏的用户维护。

我会坚持使用内置方法,您可以随时编写自定义RoleProvider以匹配您的用户群所需的角色和权限( 实现RoleProvider

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM