良好的安全库

时间:2011-04-26 14:28:59

标签: c# asp.net-mvc-3

MVC 3有一个很好的安全库吗?我对轻量级的User-Roles-Rights库感兴趣。我可以自己编写这个库,但我想看看是否有一个好的库可以节省一些时间。

我可以利用Asp.Net安全性,但我不希望有一个单独的数据库。是否可以将这些表添加到我的数据库中?

重要的一点是,这是一个Intranet应用程序,它将使用Active Directory身份验证。

4 个答案:

答案 0 :(得分:1)

我会推荐Rhino Security。我在我的一些工作项目中使用它,这是一个非常顺利的旅程。您不需要单独的数据库。

最好的资源可能是Ayendes blog。该项目是开源的,并且正在GitHub上。

答案 1 :(得分:1)

如果您使用内置的ASP.NET安全模型(用户,角色等),则可以使用Aspnet_regsql.exe命令/向导将表添加到您自己的数据库中。

然后可以使用ASP.NET Web Site Administration Tool来执行添加用户和分配角色等操作(在Visual Studio中转到“网站”菜单,然后“ASP.Net配置”)。

在MVC中,您可以使用[Authorize]属性(documentation)将控制器或操作方法标记为需要授权或特定角色或用户。

答案 2 :(得分:0)

一切都是关于:什么以及如何保障?

我最近基于CRM API创建了在线服务,我使用实体框架(作为我的ORM)和我自己的会员提供商角色提供程序(我告诉this question

在数据库中,我所拥有的只是一个简单的tblUserstblRoles

使用 .NET Providers ,您最终会很高兴您可以轻松使用可用的方法,例如

[Authorize(Roles = "Partner, Admin")]
public ActionResult MyAction()
{
    ...
}

@if (Roles.IsUserInRole(Context.User.Identity.Name, "Admin"))
{
    <div>You're an ADMIN, Congrats!</div>
}

为了保护访问密码,我向here询问了最佳方法,最后使用BCrypt,这非常容易使用。

如果您需要的不仅仅是这个,我会使用alexn回答并使用NHibernateRhino-Security一起使用。

答案 3 :(得分:0)

始终为您的用户/密码/角色设置单独的数据库,我建议您坚持使用.net身份验证提供程序。如果您的应用程序遭到入侵,黑客可能会发现如果将用户/角色/密码存储在同一个数据库中,则更容易阅读它们。即使你有加密密码,黑客也有彩虹表(如果他们能读取加密密码的话,他们也可以读盐,并强行离线)。

.net身份验证提供程序中内置了许多安全功能,在滚动自己的时候通常不会考虑这些功能(滚动自己的安全功能总是对任何与安全相关的问题都不好。)

另外,我将看看OWASP ESAPI for .NET中可用的内容,看看它是否有用。它不是MVC或特定于身份验证,但是您可以在整个应用程序中使用许多有用的功能。

https://www.owasp.org/index.php/Category:OWASP_Enterprise_Security_API

简而言之,回答你的问题:是的.net有一个很好的安全库,内置它。