現在オフラインです。再接続するためにインターネットの接続を待っています

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

現象
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 2.0 フォーム認証のチケットと Cookie の詳細については、以下のサポート技術情報番号をクリックしてください。
910443 フォーム認証のチケットと Cookie について
ASP.NET の Web リソース ハンドラーの詳細については、以下のサポート技術情報番号をクリックしてください。
910442 ASP.NET 2.0 の Web リソースの操作
invalid viewstate unable to validate data
プロパティ

文書番号:2431728 - 最終更新日: 12/20/2011 10:54:00 - リビジョン: 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
フィードバック