【问题标题】:Centralized Authorization of Controllers and Actions (ASP.NET MVC 3)控制器和操作的集中授权 (ASP.NET MVC 3)
【发布时间】:2012-03-01 13:28:56
【问题描述】:

在自定义 AuthorizeAttibute(全局注册)中,是否存在任何可能的安全问题或陷阱,以根据控制器类型和被调用的操作应用授权?

例如(不是真正的代码)

string controllerFullName=_filterContext.ActionDescriptor.ControllerDescriptor.ControllerType.FullName;

string minRequiredRole = GetControllerMinRequiredRole(controllerFullName);

if(User.MeetsRoleRequirement(minRequiredRole))
{
     //give access
}
else
{
    //no you're not allowed
}

【问题讨论】:

    标签: asp.net-mvc-3 security authorize-attribute


    【解决方案1】:

    主要问题在于授权缓存 - 所以有一些事情需要了解。查看我在此处发布的链接:

    Creating a AuthorizeAttribute - what do I need to know?

    查看现有属性的代码以及它如何处理缓存,以确保您不会导致与基本属性相同的问题。

    【讨论】:

    • 那么如果我从 AuthorizeAttrbute 继承并调用 base.OnAuthorized 呢?我还需要担心缓存问题吗? (现在我只是重写 OnAuthorized 来获取 AuthorizationContext。我不知道如何在 AuthorizeCore 中获取 AuthorizationContext,因为它传递了一个 HttpContextBase)
    • 这里有一个有趣的 sn-p(请参阅缓存部分):diaryofaninja.com/blog/2011/07/24/… 您在使用自己的 OnAuthorization 吗?如果是这样,请注意他们在这里做什么
    • 我不是自己写的,而是继承自默认的 AuthorizeAttrbute 属性。所以似乎通过调用base.OnAuthorized,我得到了缓存黑客(看起来黑客是核心AuthorizeAttrbute类的一部分)。看起来我很安全。除非你有什么要补充的,谢谢你的回答
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-01
    • 1970-01-01
    • 2013-05-18
    • 1970-01-01
    • 2014-05-28
    • 2018-03-01
    相关资源
    最近更新 更多