MVC3安全提示

时间:2011-03-14 22:37:59

标签: security asp.net-mvc-3

我正在使用AspNetSqlMembershipProvider并创建了我的页面以进行配置。现在我有这个工作,我想知道如何最好地利用整个网站的安全性。对于控制器,我可以使用[授权],但下一步该怎么办?我的意思是我只是用Roles.IsUserInRole来混淆视图,我需要在哪里进行检查。关于如何处理这个问题的任何好的示例网站?

2 个答案:

答案 0 :(得分:7)

不,你不应该用Roles.IsUserInRole混淆你的观点,这不是视图检查角色的责任,这是一个控制器/授权过滤器作业来填充你的视图模型,以便在视图中你只有:

@if (Model.ShouldDisplaySomeSection)
{
    ... // some section
} else {
   ... // not authorized
}

另请注意,如果使用标准[Authorize]属性修饰控制器操作并且用户没有足够的角色,则此操作可能永远不会执行且视图永远不会被命中。

我个人认为Developer Highway Code是一个非常有用的安全检查表,即使它不仅限于MVC。

答案 1 :(得分:3)

我创建了一个解决方案,我从Authorize属性派生,在我自己的属性中,我引入了一个名为param[]的{​​{1}}类型的enum数组,因此我跳过魔术弦。

然后是杂乱的观点。好吧,我想如果你真的应该在那里写一下,你应该问自己什么时候你要在视图中写UserRoles。我认为你应该尽量保持视图干净,并尝试尽可能多地排序IsUserInRole。如果您不能这样做,请考虑使用HTML帮助程序。