ASP.NET で暗号化されたコンテンツは、永続的なフォーム認証 Cookie を使用しているか Web ファームで展開されている Web サイトでは解読されないかエラーになる

文書翻訳 文書翻訳
文書番号: 2431728 - 対象製品
すべて展開する | すべて折りたたむ

現象

Web ファームに展開されている Microsoft ASP.NET Web サイトにサービスを提供するサーバーに、セキュリティ更新プログラム MS10-070 を適用した後、Web ファーム内の一部のサーバーまたはアプリケーションで、以下のいずれかの現象が発生する場合があります。
  • データを暗号化解除できない
  • WebResource または ScriptResource ハンドラーで例外が発生する
  • フォーム認証を使用する場合に認証が失敗する
  • "無効な viewstate" 例外が発生する
  • フォーム認証 Cookie などのデータを暗号化解除しようとすると "データを検証できません" という例外が発生する
エラーは ASP.NET アプリケーションにアクセスする際のアプリケーション例外として表示される可能性があり、またアプリケーション ログには次のような情報が記録されている場合もあります。


メッセージ 1:

System.Web.HttpException : Unable to validate data. at System.Web.Configuration.MachineKeySection.EncryptOrDecryptData(Boolean fEncrypt, Byte[] buf, Byte[] modifier, Int32 start, Int32 length, IVType ivType, Boolean useValidationSymAlgo, Boolean signData)

メッセージ 2:

種類: 警告
イベント ソース: ASP.NET 2.0.50727.0
イベント カテゴリ: Web イベント
イベント ID: 1309
日付: Date
時刻: Time
ユーザー: N/A
説明:
エラー コード: 3005
エラー メッセージ: ハンドルされていない例外が発生しました。
例外の情報:
例外の種類: HttpException
例外のメッセージ: データを検証できません。

原因

セキュリティ情報 MS10-070 で提供されるセキュリティ更新プログラムにより、ASP.NET の暗号化の既定の動作が変更されます。セキュリティ更新プログラムがインストールされた後の新しい既定の動作では、暗号化のみが要求されている場合であっても、暗号化に加えて検証を実行します。この既定の動作により、この更新プログラムが適用されたサーバーでは、暗号化されたペイロードが変更されます。ペイロードには、ビュー ステートとフォーム認証 Cookie が含まれる場合があります。Web ファームで、一部のサーバーにのみセキュリティ更新プログラムが適用される場合、Web ファーム内の異なるサーバーで、同じペイロードに対する暗号化と復号化の方法に相違が生じ、動作でのこの相違により例外が発生します。この動作は、セキュリティ更新プログラムが適用された後、セキュリティ更新プログラムを適用する前にシステム上で永続化されたフォーム認証 Cookie が消費された場合にも発生する可能性があります。

また、Microsoft .NET Framework 2.0 の Service Pack のバージョンが異なると、暗号化と復号化の方法が異なります。そのため、このセキュリティ更新プログラムがインストールされている Web ファーム環境で .NET Framework の Service Pack のレベルが異なると、暗号化されたペイロードが異なり、また同じような復号化のエラーが発生します。

解決方法

ASP.NET コンテンツをサービス提供するすべてのサーバーで、以下の条件がすべて該当することを確認します。
  • Web ファームで ASP.NET Web サイトにサービスを提供するすべてのサーバーで、セキュリティ更新プログラムをインストールする必要があります。一部のサーバーでセキュリティ更新プログラムがインストールされていない場合、これらサーバーに更新プログラムを適用する必要があります。
  • システム全体に MS10-070 セキュリティ更新プログラムを適用する場合、Web ファームであるバージョンの .NET Framework 2.0 を実行しているすべてのコンピューターでは、Service Pack のレベルが同じである必要があります。サーバー上の Service Pack のレベルに違いが存在する場合、すべてのサーバーを最新の Service Pack に更新し、すべてのセキュリティ更新プログラムを再度適用する必要があります。そのため、Web ファームの一部のサーバーが .NET Framework 2.0 SP1 を実行していて、他のサーバーが .NET Framework 2.0 SP2 を実行している場合は、Web ファームのすべてのサーバーにセキュリティ更新プログラムを適用する前に、すべての .NET Framework 2.0 SP1 のサーバーを .NET Framework 2.0 SP2 にアップグレードする必要があります。
  • 更新プログラムが適用される前に生成されたフォーム認証 Cookie などの暗号化されたデータを、アプリケーションが消費していないことを確認します。セキュリティ更新プログラムが適用された後に、以前に暗号化されたデータを更新する必要があります。
.NET Framework のバージョンを確認する方法の詳細、およびサーバーでのセキュリティ更新プログラムのインストールについては、「関連情報」を参照してください。

関連情報

ASP.NET ビュー ステートの詳細については、以下の資料を参照してください。
ASP.NET ビューステートの概要
ASP.NET フォーム認証の詳細については、以下の資料を参照してください。
ASP.NET フォーム認証の概要
ASP.NET 2.0 フォーム認証のチケットと Cookie の詳細については、以下のサポート技術情報番号をクリックしてください。
910443 フォーム認証のチケットと Cookie について
ASP.NET の Web リソース ハンドラーの詳細については、以下のサポート技術情報番号をクリックしてください。
910442 ASP.NET 2.0 の Web リソースの操作

プロパティ

文書番号: 2431728 - 最終更新日: 2011年12月20日 - リビジョン: 2.0
この資料は以下の製品について記述したものです。
  • Microsoft .NET Framework 4.0
  • Microsoft .NET Framework 3.5 Service Pack 1
  • Microsoft .NET Framework 3.5
  • Microsoft .NET Framework 2.0 Service Pack 2
  • Microsoft .NET Framework 1.1 Service Pack 1
キーワード:?
kbprb kbfix kbtshoot kbexpertiseinter kbsurveynew KB2431728
"Microsoft Knowledge Baseに含まれている情報は、いかなる保証もない現状ベースで提供されるものです。Microsoft Corporation及びその関連会社は、市場性および特定の目的への適合性を含めて、明示的にも黙示的にも、一切の保証をいたしません。さらに、Microsoft Corporation及びその関連会社は、本文書に含まれている情報の使用及び使用結果につき、正確性、真実性等、いかなる表明・保証も行ないません。Microsoft Corporation、その関連会社及びこれらの権限ある代理人による口頭または書面による一切の情報提供またはアドバイスは、保証を意味するものではなく、かつ上記免責条項の範囲を狭めるものではありません。Microsoft Corporation、その関連会社 及びこれらの者の供給者は、直接的、間接的、偶発的、結果的損害、逸失利益、懲罰的損害、または特別損害を含む全ての損害に対して、状況のいかんを問わず一切責任を負いません。(Microsoft Corporation、その関連会社 またはこれらの者の供給者がかかる損害の発生可能性を了知している場合を含みます。) 結果的損害または偶発的損害に対する責任の免除または制限を認めていない地域においては、上記制限が適用されない場合があります。なお、本文書においては、文書の体裁上の都合により製品名の表記において商標登録表示、その他の商標表示を省略している場合がありますので、予めご了解ください。"

フィードバック

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com