2011-04-01 55 views
3

Webファーム内の自分のASPサーバーから大量のエラーアラートが発生していて、すべてのサーバーがweb.configファイルに同じマシンキーを持っています。 私はここを見回しましたが、この正確なケースには答えられませんでした。どんな提案も大歓迎です。asp.netエラー:これは無効なWebresourceリクエストです

質問を考えていただきありがとうございます。

はここでエラースタックの一部です(クエリ文字列は、我々のアプリからではなく、何か他のものの一部とすることができる):

Error message: This is an invalid webresource request. Stack trace:
at System.Web.Handlers.AssemblyResourceLoader.System.Web.IHttpHandler.ProcessRequest(HttpContext context) at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) Source: System.Web Method: Void System.Web.IHttpHandler.ProcessRequest(System.Web.HttpContext) Page: QueryString: d=hAGTq1Iohid

ウィン2003サーバーにパッチが適用されたときに、これらが起動している場合があります。後でdot.netフレームワークは3つの他のサーバーにインストールされましたが、エラーを投げるサーバーにはインストールされませんでした。

エラーのほとんどは復号化に関連しているようですが、同じWebファーム内のすべてのサーバがWeb設定で同じマシンキーになりました。しかし、それはエラーを止めませんでした。

も同様に見て:

"Length of the data to decrypt is invalid" 
Error message: Length of the data to decrypt is invalid. Stack trace: at System.Security.Cryptography.RijndaelManagedTransform.TransformFinalBlock(Byte[] inputBuffer, Int32 inputOffset, Int32 inputCount) at System.Security.Cryptography.CryptoStream.FlushFinalBlock() at System.Web.Configuration.MachineKeySection.EncryptOrDecryptData(Boolean fEncrypt, Byte[] buf, Byte[] modifier, Int32 start, Int32 length, Boolean useValidationSymAlgo) at System.Web.UI.Page.DecryptString(String s) at 
    System.Web.Handlers.AssemblyResourceLoader.System.Web.IHttpHandler.ProcessReques­t(HttpContext context) at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.I­ExecutionStep.Execute() at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) 

"Invalid length for a Base-64 char array" 
Error message: Invalid length for a Base-64 char array. 
Stack trace: at System.Convert.FromBase64CharArray(Char[] inArray, Int32 offset, Int32 length) 
    at System.Web.HttpServerUtility.UrlTokenDecode(String input) 
    at System.Web.UI.Page.DecryptString(String s) 
    at System.Web.Handlers.AssemblyResourceLoader.System.Web.IHttpHandler.ProcessRequest(HttpContext context) 
    at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() 
    at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) 
Source: mscorlib 
Method: Byte[] FromBase64CharArray(Char[], Int32, Int32) 

そして

"Invalid view state" 
Error message: Invalid viewstate. 
Stack trace: at System.Web.UI.Page.DecryptString(String s) 
    at System.Web.Handlers.AssemblyResourceLoader.System.Web.IHttpHandler.ProcessRequest(HttpContext context) 
    at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() 
    at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) 
Source: System.Web 
Method: System.String DecryptString(System.String) 

おかげで再び皆を。

+0

この情報をあなたの質問に追加して、より良いフォーマットにしてください。 – ChrisF

答えて

1

私は確信することはできませんが、非常に深刻なものを悪用しようとしているハックの試みのようです.NET 'Padding Oracle' Crypto Attack,discussed by Scott Guthriea patch availableがあります。したがって、サーバーが実際に脆弱であることが判明した場合は、直ちにパッチを適用し、実際に侵害されている場合はダメージコントロール手順を実行してください。

これは、アプリケーションの問題が原因である可能性もあります。しかし、これらのエラーが大量に突然表示されている場合、特に最近のアプリケーションの変更がなくても、私の最初の考えは侵入の試みでしょう。この脆弱性を悪用するために使用された方法は、解読および不正なデータ長に関するエラーを生成します。

1

このサーバーだけがパッチが適用されておらず、エラーが表示されている唯一のサーバーである場合は、最初に行うすべてのウィンドウ更新が実行されます。

実際には、その文をあまり複雑にしないようにしてください。このサーバーにパッチが適用されていない場合は、そこから始めて適用してください。

更新
あなたは、サーバーがviewstateの長さのエラーを投げていると述べました。私たちが見つけたことの1つは、データグリッドをはじめとするいくつかのコンポーネントが膨大な量のデータをビューステートに移動させることでした。もう1つのことは、長さに応じていくつかのブラウザがこの機能を停止し、すべての機能を戻さないということでした。

特定のweb.config変更を行った後、この問題は完全に解決されました。 Safari 3でも正しく動作するようになりました。 <system.web> <pages />ノードに移動し、次のように変更します。

<pages maxPageStateFieldLength="500" /> 

これは、ビューステートが500バイトごとに複数の隠しフィールド間で分割されることになります。自動分割で、通常のコードのどれもそれをサポートするために変更する必要はありません。

あなたは値で遊ぶかもしれませんが、いくつかのブラウザは入力フィールドごとに非常に多くのデータを返すことができます。バージョンによっては、これらの値が約700バイトを超えていた場合、私はsafariのチョークを見たことがあります。ファイアウォールやプロキシサーバーも問題を引き起こす可能性があります。 http://weblogs.asp.net/lduveau/archive/2007/04/17/viewstate-chunking-in-asp-net-2-0-maxpagestatefieldlength.aspx

もう1つのオプションは、ビューステートをローカルにキャッシュし、ワイヤをまったく送信しないことです。もちろん、それはウェブファームのシナリオに影響を与えますので、あなたの毒を選んでください。

+0

みなさんありがとう、それを感謝します。まあ、彼らはすべて同じウィンドウのパッチレベルにあります。アプリはasp.net 2.0で、ファーム内の3つのサーバーには.net 3.5がインストールされていますが、1つはインストールされていません。 3.5を持たないものは大多数のエラーをスローしますが、他のものは無効なviewstateとlengthエラーをスローします。これは社内のWebサイトであり、セキュリティはWebファームに対するハッキングの試みを検出していません。再び、それらはすべて設定内で同じマシンキーを持ちます。まだ見ています... – omaether

+0

@omaether:3.5は2.0の拡張版でしたので、本当に新しいフレームワークではありません。また、2.0フレームワークに影響を与えたいくつかのバグ修正がありました。 – NotMe

+0

@omaether:viewstateの問題に関する私の答えの更新を見てください – NotMe

関連する問題