2017-11-15 2 views
0

私は非効率的な冗長性のためでStartup.csセキュリティ対策

を追加し、私は
(a)は良いコーディング慣行に従事し、
(b)は無害に自分自身を繰り返していますかどうかを知りたい、または
(C)でしょう例::
1)の構成において、()IはConfigureServicesで)RewriteOptions().AddRedirectToHttps();
2を追加することができる()Iは services.Configure<MvcOptions>(options => { options.Filters.Add(new RequireHttpsAttribute()); });

他の例を追加することができ 1)Configure()で追加することができますapp.UseAuthentication();
2)ConfigureServices()で、AddMvc()コールに.RequireAuthenticatedUser()を追加できます。

は両方の例でと思われますが、これは1回の呼び出しで取り除くことができます。私は1つのコールだけを自由にしてクリアしていますか?もしそうなら、どちらを保つ方が良いですか?

これらのアプローチのすべてを使用していますが、これらの呼び出しの相対的なメリットを比較するリソースは見つかりませんでした。一緒に使用してください。あなたの最初の例取るために

+0

この[リンク](https://docs.microsoft.com/en-us/aspnet/core/security/enforcing-ssl)は、最初のクエリに十分な情報を提供する必要があります。 –

+0

ああ、1つはリダイレクトされ、もう1つは拒否されますか?したがって、両方を維持することは理にかなっていませんが、リダイレクトするのか、単にリクエストを完全に拒否したいのかを判断する必要があります。それは役に立つリンクです!前にこのページを読んだ場合、私は確かに違いを拾わなかった。私はこの次の質問をしています...もしRequireHttpsAttributeがベストプラクティスならば...しかし、私はトラフィックを遠ざけたくありません、HTTPリクエストの拒否の前後にリダイレクトが起きますか?私はこれを研究しますが、ここで洞察を歓迎します! – Wellspring

+0

そのリンクは実際には混乱しています - これらのオプションのうちの2つはHTTPSにリダイレクトします – Sock

答えて

1

Configure()

1)私はRewriteOptions().AddRedirectToHttps()を追加することができます。

2)ConfigureServices()で私はservices.Configure<MvcOptions>(options => { options.Filters.Add(new RequireHttpsAttribute()); });

を追加することができ、これらの両方は、本質的に同じことを実現する - 彼らはHTTPSにHTTP要求をリダイレクトします。違いは、どのリクエストに適用されるかです。

リライタミドルウェアを使用すると、ミドルウェアに送信されるすべての要求がHTTPSにリダイレクトされます。あなたがRequireHttpsAttributeを適用するためにグローバルフィルタを使用して第二の場合では、

public void Configure(IApplicationBuilder app) 
{ 
    app.UseStaticFiles(); // Requests handled by this middleware won't be redirected to HTTPS 

    var options = new RewriteOptions() 
     .AddRedirectToHttps(); 

    app.UseRewriter(options); // All requests that make it this far will be redirected from HTTP to HTTPS 

    app.UseMvc(); // Requests guaranteed to be HTTPS 
} 

MvcMiddlewareにそれを作る唯一の要求はHTTPSにリダイレクトされます。

ベストプラクティスの観点からは、ミドルウェアパイプラインの開始に追加することができます。ミドルウェアパイプラインの開始に追加することができます。その後、すべてのリクエストがHTTPSに必要です。 MVCミドルウェア。 2番目の例では


、二つの方法は、実際には異なることを行う:

  • app.UseAuthentication() - 要求を認証し、例えばによって要求に関連付けられUserを設定し、
  • RequireAuthenticatedUser() - コントローラのアクションメソッドが呼び出される前に、ユーザーがログインしている必要があります。ユーザーがログインしていない場合は、ログインページにリダイレクトされます。この場合、となります。app.UseMvc()の前にapp.UseAuthentication()と呼び出す必要があります。そうしないと、ログインしても要求のUserが設定されず、ログインページにリダイレクトされます。
+0

私はこれを丁寧に精査します。ありがとうございました! – Wellspring

関連する問題