あるWebアプリケーションを作っている際に、クッキーをどうしても保存できないという
トラブルに遭遇ししました。

調べていくと、全く同じスクリプトを別ホストに設置すると正常に保存できることが
確認できたので、どうもホスト名に問題がありそうです。

ということで正常にクッキーを保存できるホスト名とできないホスト名を眺めていると、
ある違いに気づきました。

そう、クッキーを保存できないホスト名には"_"（アンダースコア）が含まれていたんです。

アンダースコアってRFCが定めるホスト名のガイドラインに違反している文字列なんですね。
そういえば、このサイトのドメインを取得する際、「hori-uchi.com」にしようか、
「hori_uchi.com」にしようか悩んだんですが、「hori_uchi.com」はドメイン登録できな
かったような記憶がうっすらあります。。 

話をクッキーにもどしますが、IE5.01SP1以降ではRFCに準拠しないホスト名からクッキーは
セキュリティの観点から保存しないようになっているようです。 
こちらに詳しい情報がまとめられています。それによると、 

このIEのセキュリティパッチは、悪意あるWebサイトが他のWebサイトのCookieを取得できる
脆弱性を排除するためのもので、IE5.01SP1以降のリリースのIEリリース、SPに含まれます。

このパッチを適用すると、以下のいずれかに該当する場合、cookieはブラウザに保存されません。 
URLのホスト名が、RFCのドメイン名のガイドラインに違反している文字を含む場合（"_"など






[PRB] Internet Explorer セキュリティ修正プログラム MS01-055 のインストール後、セッション変数が要求間で保持されない
対象製品
文書番号 : 316112 
最終更新日 : 2005年7月11日 
リビジョン : 5.2 
現象
Microsoft Internet Explorer 5.5 または 6.0 用のセキュリティ修正プログラム MS01-055 のインストール後、次の問題が発生することがあります。 ? セッション変数が失われる。  
? 要求間でセッション状態が維持されない。  
? クライアント システム上で Cookie が設定されない。  
注 : セキュリティ修正プログラム MS01-055 で提供された修正を含む、より最新の修正プログラムのインストール後も、これらの問題が発生することがあります。 
先頭へ戻る

原因
セキュリティ修正プログラム MS01-055 では、不適切な構文を使用した名前のサーバーは Cookie 名を設定できません。Cookie を使用するドメインでは、ドメイン名およびサーバー名に英数字 ("-" または ".") だけを使用しなければなりません。サーバー名にアンダースコア ("_") など、その他の文字が含まれている場合、Internet Explorer は Cookie をブロックします。 

ASP のセッション状態とセッション変数の機能は Cookie に依存しているため、クライアント上に Cookie を設定できない場合、ASP は要求間でセッション状態を維持できません。 

この問題は、ホスト ヘッダ内の不適切な名前構文が原因の場合もあります。 
先頭へ戻る

解決方法
この問題を回避するには、次の方法のいずれかを使用します。 ? ドメインとサーバーの名前をを英数字だけを使用する名前に変更する。  
? ドメイン名やサーバー名ではなく、インターネット プロトコル (IP) アドレスを使用してサーバーを参照する。  
注 : サーバー名の変更後は、Microsoft IIS (インターネット インフォメーション サーバー) 構成の変更が必要になることがあります。詳細は｢関連情報｣を参照してください。 
先頭へ戻る

状況
この動作は仕様です。 
先頭へ戻る

詳細
Internet Explorer 5.5 および 6 には脆弱性が存在します。この脆弱性を利用して、悪意のあるユーザーが、クライアント コンピュータに格納されている Cookie に対して、Web サイトから不正にアクセスすることを可能にする URL を作成し、これらの Cookie に含まれている値を変更する可能性があります。一部の Web サイトでは、Cookie を使用して重要なデータをクライアント コンピュータに格納しているため、このセキュリティの脆弱性により個人情報が漏洩する可能性があります。 

セキュリティ修正プログラム MS01-055 は、不適切構文を使用した名前のサーバーが Cookie 名を設定できなくすることにより、セキュリティの脆弱性を修正します。この修正プログラムでは、サーバー名は RFC (Request for Comments) 833 の Appendix 1、"DOMAIN NAMES - IMPLEMENTATION and SPECIFICATION" で定義されている名前付け規則に従う必要があります。詳細は｢関連情報｣を参照してください。 
先頭へ戻る

関連情報
セキュリティ修正プログラム MS01-055 の情報を参照するには、以下の「サポート技術情報」 (Microsoft Knowledge Base) をクリックしてください。 
312461 (http://support.microsoft.com/kb/312461/EN-US/) MS01-055: Internet Explorer Cookie Data Can Be Exposed or Altered Through Script Injection
先頭へ戻る

312461 (http://support.microsoft.com/kb/312461/JA/) MS01-055: スクリプトにより、IE の Cookie データが漏洩または改ざんされる 
先頭へ戻る

サーバー名の変更後、必要になる可能性のある IIS 設定変更の関連情報を参照するには、以下の「サポート技術情報」 (Microsoft Knowledge Base) をクリックしてください。 
234142 (http://support.microsoft.com/kb/234142/EN-US/) Updating IIS After You Change the Computer Name
先頭へ戻る

234142 (http://support.microsoft.com/kb/234142/JA/) [IIS] コンピュータ名変更後の IIS の設定方法について 
先頭へ戻る

RFC 883 仕様の詳細については、次の Internet Engineering Task Force Web サイトを参照してください。 
http://www.ietf.org/rfc/rfc883.txt?number=883 (http://www.ietf.org/rfc/rfc883.txt?number=883)
先頭へ戻る

関連情報
この資料は米国 Microsoft Corporation から提供されている Knowledge Base の Article ID 316112 (http://support.microsoft.com/kb/316112/EN-US/) (最終更新日 2003-09-17) を基に作成したものです。 
先頭へ戻る

