2012-02-09 15 views
0

カスタムAuthorizeAttibute(グローバルに登録された)内で、コントローラタイプとアクションの呼び出しに基づいて承認を適用する可能性のあるセキュリティ上の問題や落とし穴がありますか?コントローラとアクションの一元化された承認(ASP.NET MVC 3)

(実際のコードではありません)

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

string minRequiredRole = GetControllerMinRequiredRole(controllerFullName); 

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

答えて

1

主な問題は、認可キャッシングにあります。そのため、知っておくべきことがいくつかあります。既存の属性のコードとどのようにそれはあなたが基本属性がないように、同じ問題を引き起こしてアレント確実にするために、キャッシングを扱う時

Creating a AuthorizeAttribute - what do I need to know?

ルック:私はここに投稿したリンクをチェックしてください。

+1

したがって、私がAuthorizeAttrbuteを継承し、base.OnAuthorizedを呼び出すとどうなりますか?私はまだキャッシングの問題について心配する必要はありますか? (今は、OnAuthorizedをオーバーライドしてAuthorizationContextを保持していますが、HttpContextBaseを渡してからAuthorizeCoreでAuthorizationContextを取得する方法はわかりません) – enamrik

+0

興味深いスニペットがあります。 www.diaryofaninja.com/blog/2011/07/24/writing-your-own-custom-aspnet-mvc-authorize-attributesあなた自身のOnAuthorizationを使用していますか?もしそうなら、彼らがここで何をしているかを書きます。 –

+0

私は自分自身を書くのではなく、デフォルトのAuthorizeAttrbute属性から継承しています。だから、base.OnAuthorizedを呼び出すことによって、キャッシュのハッキングが発生します(ハックがコアAuthorizeAttrbuteクラスの一部であるように見えます)。私は安全だと思われる。追加する必要がある場合を除き、答えに感謝します – enamrik

関連する問題