回答:
2つの方法があります。1つのhttpCookies
要素でweb.config
オンにできますrequireSSL
、SSLのみのセッションとフォーム認証内のセッションを含むすべてのCookieのみを送信が、httpcookiesでSSLをオンにする場合は、フォーム設定内でもオンにする必要があります。
明確にするために編集します。
これを入れます<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>
roleManager
要素がある場合は、その属性cookieRequireSSL="true"
もtrueに設定する必要があります。参照 msdn.microsoft.com/en-us/library/...
エンタープライズ環境でチェックインされたコードについて話していると、事態はすぐに乱雑になります。最善の方法は、web.Release.configに以下を含めることです。
<system.web>
<compilation xdt:Transform="RemoveAttributes(debug)" />
<authentication>
<forms xdt:Transform="Replace" timeout="20" requireSSL="true" />
</authentication>
</system.web>
この方法では、開発者は影響を受けず(デバッグで実行)、リリースビルドを取得するサーバーのみがCookieをSSLにする必要があります。
@Mark Dの回答に基づいて、web.config変換を使用して、さまざまなCookieをすべてセキュアに設定します。これには、設定anonymousIdentification cookieRequireSSL
とが 含まれますhttpCookies requireSSL
。
そのためには、web.Release.configを次のように設定します。
<?xml version="1.0"?>
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
<system.web>
<httpCookies xdt:Transform="SetAttributes(httpOnlyCookies)" httpOnlyCookies="true" />
<httpCookies xdt:Transform="SetAttributes(requireSSL)" requireSSL="true" />
<anonymousIdentification xdt:Transform="SetAttributes(cookieRequireSSL)" cookieRequireSSL="true" />
</system.web>
</configuration>
ASP.NET Membership Provider
(私は知っている、それは古くからある)でロールとフォーム認証を使用している場合はroleManager cookieRequireSSL
、forms requireSSL
属性も安全必要があります。その場合、web.release.configは次のようになります(上記に加えて、メンバーシップAPIの新しいタグ)。
<?xml version="1.0"?>
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
<system.web>
<httpCookies xdt:Transform="SetAttributes(httpOnlyCookies)" httpOnlyCookies="true" />
<httpCookies xdt:Transform="SetAttributes(requireSSL)" requireSSL="true" />
<anonymousIdentification xdt:Transform="SetAttributes(cookieRequireSSL)" cookieRequireSSL="true" />
<roleManager xdt:Transform="SetAttributes(cookieRequireSSL)" cookieRequireSSL="true" />
<authentication>
<forms xdt:Transform="SetAttributes(requireSSL)" requireSSL="true" />
</authentication>
</system.web>
</configuration>
ここでのweb.config変換の背景:http : //go.microsoft.com/fwlink/? LinkId=125889
明らかに、これはOPの元の問題を超えていますが、すべてをセキュリティで保護するように設定しないと、セキュリティスキャンツールが気づき、レポートに赤いフラグが表示されることを期待できます。どうやって知っているか聞いてください。:)
<httpCookies requireSSL="true" />