3

私たちの組織には、フォーム認証のための中心的なソリューションがあります。この外部 URL を使用する ASP.Net MVC アプリを実装しようとしていますが、RC までは機能していました。解放された...

これが何が起こっているかです

ActionAttribute 拡張機能内

見つからない場合はセッション変数をチェックし、見つかった場合はリクエスト データ チャックをチェックし、見つからない場合はセッション変数を設定します。見つかった場合は外部 URL にリダイレクトします。

問題は、RC1 に更新するまで、これが機能していたことです。それ以来、非常に多くのリクエストが外部 URL に送信されているため、DoS 攻撃を検出して私を締め出してしまいました!

リダイレクト コードを削除し、フォーム認証の web.config の変更に置き換えましたが、同じことが起こりました...

4

3 に答える 3

0

この問題は、IPを要求する静的ディクショナリを作成し、同じIPから重複する要求を削除することで解決しました。あまり良い解決策ではないので、誰かがより良い解決策を見つけたら、私に知らせてください。

于 2009-02-09T19:21:29.563 に答える
0

独自の認証プロバイダーを導入しようとする代わりに、Microsoft Genevaを使用してみませんか?

于 2009-02-06T19:41:16.993 に答える
0

コード:

public class MyAuthenticate : ActionFilterAttribute
    {        
        public override void OnActionExecuting(ActionExecutingContext filterContext)
        {
            if (filterContext.HttpContext.Session["user"] == null)
            {
                using (Authenticator dp = new Authenticator())
                {
                    MyUser mu;
                    string data = string.Empty;
                    try
                    {
                        data = filterContext.HttpContext.Request["Data"];
                    }
                    catch { };

                    if (!string.IsNullOrEmpty(data))
                    {
                        mu = dp.Redeem(data);
                        if (mu.authenticated)
                        {                            
                            filterContext.HttpContext.Session.Clear();
                            AuthenticatedUser user = new AuthenticatedUser(mu);
                            filterContext.HttpContext.Session.Add("user", user);
                            FormsAuthentication.SetAuthCookie(user.UserId, false);
                        }
                        else
                        {
                            filterContext.HttpContext.Response.Redirect("MY EXTERNAL URL GOES HERE!!");

                        }
                    }
                    else
                    {
                        filterContext.HttpContext.Response.Redirect("MY EXTERNAL URL GOES HERE!!");
                    }
                }
            }
            base.OnActionExecuting(filterContext);
        } 
    }
}
于 2009-02-09T16:44:29.193 に答える