3

ASP.NET Identity v2 を使用する ASP.NET MVC 5 サイトがあります。NWebSecを使用して「強化」しようとしています。

このサイトでは MVC と Owin を使用しているため、NWebSec.MVC と NWebSec.OWIN NuGet パッケージをインストールしました。

ドキュメントを読むと、設定ファイルを介して NWebSec/MVC に多くのオプションを設定でき、Startup.cs ファイルを介してコードで同じオプションのいくつかを NWebSec.OWIN に設定できます。

たとえば、HSTS を追加するには、web.config で次のようにします。

  <nwebsec>
    <httpHeaderSecurityModule xmlns="http://nwebsec.com/HttpHeaderSecurityModuleConfig.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="NWebsecConfig/HttpHeaderSecurityModuleConfig.xsd">
      <securityHttpHeaders>
        <strict-Transport-Security max-age="365" includeSubdomains="true" httpsOnly="false" preload="true" />
      </securityHttpHeaders>
    </httpHeaderSecurityModule>
  </nwebsec>

...および/または startup.cs の次の内容:

    public void Configuration(IAppBuilder app)
    {
        this.ConfigureAuth(app);

        app.UseHsts(o => o.MaxAge(365).IncludeSubdomains().AllResponses().Preload());
    }

私の質問は、両方の場所ですべてのオプションを設定する必要があるのか​​、それとも 1 つの場所だけで設定する必要があるのか​​ (その場合、どちらが優れているか) ですか?

web.config ファイルですべての構成を行いたいのですが、Startup.cs ファイルで設定する必要があるいくつかの設定が失われるかどうかはわかりません。

4

1 に答える 1

3

web.config ですべての構成を安全に設定できます。OWIN パッケージは、web.config の代わりにスタートアップ クラスを使用することを好むユーザーのために用意されています。

たとえば、web.config とミドルウェアの両方で HSTS を構成する必要がある場合、最初に web.config に従って応答でヘッダーが設定されます。ミドルウェアは後でパイプラインで実行され、web.config の内容に関係なく、OWIN 構成に基づいてヘッダーを設定します。したがって、ヘッダーが両方の場所で構成されている場合、ミドルウェアが優先されます。

この回答を完全にするために: MVC 属性を使用して基本構成をオーバーライドする場合、結果の構成を計算するときに、特定のヘッダーの OWIN 構成が web.config よりも選択されます。したがって、OWIN はすべての場合で web.config よりも優先されます。

于 2015-07-24T11:08:47.503 に答える