ASP.NETセッションCookieにセキュアフラグを設定するにはどうすればよいですか?

StackOverflow https://stackoverflow.com/questions/1442863

  •  22-07-2019
  •  | 
  •  

質問

ASP.NETセッションCookieにセキュアフラグを設定して、HTTPSでのみ送信され、プレーンなHTTPでは送信されないようにするにはどうすればよいですか?

役に立ちましたか?

解決

2つの方法があります。httpCookiesの1つのweb.config要素を使用すると、requireSSLを有効にできます。また、フォーム構成内でも有効にする必要があります。

わかりやすく編集: これを<system.web>

に入れます
<httpCookies requireSSL="true" />

他のヒント

<system.web>要素に、次の要素を追加します。

<httpCookies requireSSL="true" />

ただし、<forms>ブロックにsystem.web\authentication要素がある場合、これはhttpCookiesの設定を上書きし、デフォルトのfalseに戻します。

この場合、requireSSL="true"属性をフォーム要素にも追加する必要があります。

つまり、次のようになります:

<system.web>
    <authentication mode="Forms">
        <forms requireSSL="true">
            <!-- forms content -->
        </forms>
    </authentication>
</system.web>

こちらおよびこちらこれらの要素のMSDNドキュメント。

エンタープライズ環境でチェックインされたコードについて話している場合、物事はすぐに厄介になります。最善の方法は、 web.Release.config に次のものを含めることです。

<system.web>
  <compilation xdt:Transform="RemoveAttributes(debug)" />
  <authentication>
      <forms xdt:Transform="Replace" timeout="20" requireSSL="true" />
  </authentication>
</system.web>

そのため、開発者は影響を受けず(デバッグで実行)、リリースビルドを取得するサーバーのみがCookieをSSLにする必要があります。

secure-この属性は、リクエストがHTTPSなどの安全なチャネルを介して送信されている場合にのみ、Cookieを送信するようブラウザに指示します。これにより、Cookieが暗号化されていない要求で渡されるのを防ぐことができます。 HTTPとHTTPSの両方でアプリケーションにアクセスできる場合、Cookieがクリアテキストで送信される可能性があります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top