web-dev-qa-db-ja.com

IIS 7.5でASP.NETを使用しているときに、Cookieが常にSSL経由で送信されるようにする方法を教えてください。

Firesheepは、安全でないCookie交換の問題を前面に押し出しました。

Webユーザーと通信しているときに、すべてのCookie交換がサーバーへのSSLで保護された接続を介してのみ行われるようにするにはどうすればよいですか?

私たちのシナリオは、WebアプリがASP.NET 4.0で記述され、一部の範囲を狭める場合IIS 7.5を実行しているWindows Server 2008 R2でホストされています。

23
cpuguru

app.config を使用して強制できます。形式は(<system.web> セクション)

<httpCookies domain="String"
             httpOnlyCookies="true|false" 
             requireSSL="true|false" />

あなたは本当に欲しい、少なくとも

<httpCookies requireSSL='true'/>

ただし、実際に厄介なJavaScriptを実行している場合を除き、できればhttpOnlyCookiesもオンにすることをお勧めします。

21
blowdart

Firesheep(および関連する攻撃)からサイトを保護する最も安全な方法:

  • サイト全体のSSL保護に移動する:サイト全体をHTTPSに移動し、すべてのHTTPアクセスを無効にします。つまり、SSLでサイト全体を保護します。これを行うためのその他のリソースを次に示します: Firesheepから保護する方法サイト全体のSSLの長所と短所SSLがFiresheepから保護される理由

  • すべてのCookieにSECUREフラグを設定します:サーバーがCookieを設定するたびに、CookieにSECUREフラグを設定するように調整します。 SECUREフラグは、SSLで保護された(HTTPS)接続経由でのみこのCookieを送り返すようにユーザーのブラウザに指示します。ブラウザーは、暗号化されていない(HTTP)接続を介してSECURE Cookieを送信することはありません。最も簡単な手順は、サイトが使用するすべてのCookieにこのフラグを設定することです。

また、いくつかの追加手順をお勧めします。

  • サードパーティのコンテンツに注意してください:サードパーティのウィジェット、ライブラリ、およびコンテンツはセキュリティリスクになる可能性があります。サードパーティのJavascriptを(たとえば、<SCRIPT SRC=...>経由で)含める場合は、サードパーティがHTTPS URLを参照していることを確認することをおすすめします。そうしないと、サイトのセキュリティがアクティブな攻撃にさらされることになります。 ( Jeremiah GrossmanのFAQ)も参照 も参照してください。) 混合コンテンツの警告 でユーザーが殺到するのを防ぐには、サードパーティのイメージやライブラリを含むすべてのコンテンツがHTTPS経由でも配信されるようにしたいと考えています。

上記はやり過ぎだと主張する人もいるでしょう。場合によっては、サイトの一部のみでSSLを使用することにより、Firesheepから保護できる可能性があります。ただし、これを行うには、注意と詳細な知識が必要であり、適切に行うには注意が必要です。ここで質問する必要があることを考えると、個人的にはサイト全体のSSLから始めることをお勧めします。あなたはそれを正しくするより良いチャンスがあります。

これをIISに実装する方法:私はIISの専門家ではないので、あなたに決定的なレシピを与えることはできませんこれらの手順をIISに実装する方法。ただし、この参照 IISでSSLを有効にする は役立つ場合があります。サイトのルートを右クリックして[Properties]を選択できるようです、[Directory Security]タブをクリックし、[Secure Communications]で[Edit]をクリックしてRequire Secure Channel (SSL)を有効にします。SECUREフラグを設定するIISの設定方法がわかりませんすべてのCookieで自動的に実行されます。既存のサイトを移行する場合は、リダイレクトを設定して、HTTPページにアクセスするすべてのユーザーがHTTPSにリダイレクトされるようにすることをお勧めします。次の参照が(未テスト)に役立ちます: HTTPSへのリダイレクトHTTPSにリダイレクトする3つの方法 。既存のサイトを移行する場合は、サイトへのすべてのリンクと参照をhttp: URLからhttps: URLに変更する必要もあります。すべてのCookieにSECUREフラグを設定するようにASP.NETを構成しますが、 cookieRequireSSL="true"または<httpCookies requireSSL="true">Web.configに追加できます。これは重要であり、特にHTTPを有効にしている場合、またはHTTPページからHTTPSページへのある種のリダイレクトがある場合は重要です。最後に、 HTTPSのパフォーマンスチューニング に多くの資料が公開されています。

18
D.W.

私は自分自身を発行することを決心している間にこのスレッドに出くわしました。私の解決策は、Cookieパスは大文字と小文字が区別されるということです。ここに関連する質問があります。

https://stackoverflow.com/questions/399982/why-are-cookie-paths-case-sensitive

私の解決策は、ランディングページから正しいパスにリダイレクトすることでした。可能なリダイレクトループに注意してください。

url.com/VirtualDirectory/default.aspx->

//正しいパスが表示されますurl.com/virtualdirectory/default.aspxresponse.redirect( "〜/ default.aspx");

1
MichaelChan