環境
わかりましたので、ここで重複を作成しないようにしていますが、この質問は以前に対処されていることに気付きました.
私はエラーについてたくさんの読書をしてきました:
ビューステート MAC の検証に失敗しました。このアプリケーションが Web ファームまたはクラスターによってホストされている場合は、構成で同じ validationKey と検証アルゴリズムが指定されていることを確認してください。AutoGenerate はクラスタでは使用できません。
ネットワーク監視ソフトウェアと SQL のバージョンをアップグレードした後、エラーが発生し始めました。
このページは、表示されているサイトの外部にある ASP.NET 4.0 Web フォームであり、C# で記述され、JavaScript とかなりの量の SQL が使用されています。また、.NET のグラフ フォームを多用しています (グラフの 6 つのグラフ エリアのように、SQL によって動的に生成された複数の系列がそれぞれに含まれています)。SQL Server 2008R2 の無料バージョンから完全な SQL Server 2012 インスタンスの試用版に移行し、SolarWinds Orion バージョンを NPM 10.6 に更新しました。
このコードは、各ネットワークで平均化されたさまざまな統計の健全性を追跡する大規模なグラフ作成プログラムです。問題は、自動更新を意味する「スクロール チャート」を要求したことです。メタまたはフル ポストバックの代わりにフォーム リフレッシュを使用しています。これは、グラフを特定の統計、ネットワーク、ページ、および時間枠にとどめておくことができるさまざまな変数があるためです。最初に見ていたビューを更新して保持します。5 分以上経過していない場合は、更新され続けます。これらの値はすべて ViewState に格納されています。(元々は、ページ上の非表示のリテラルに格納されていたため、さらに悪化していました)。
ソフトウェアを更新しても、これが魔法のように Web ファームやクラスターに変わったわけではありません。
リサーチ
この問題は、ViewState が不都合なタイミングで更新され、ページが検証アルゴリズムと同期されずにロードされるためにキーの検証が失敗することが原因であると理解しています。私は、次のような同様の質問と回答をたくさん見てきました。
ビューステート MAC の ASP.NET 検証に失敗しました
20 分以上ページにいると、viewstate MAC の検証に失敗しました
ScriptResource エラー: ハッキングされているのでしょうか?
http://aspadvice.com/blogs/joteke/archive/2006/02/02/15011.aspx
確かに、これは顧客向けではありませんが、Microsoft によると:
>アプリケーションまたはページがビュー ステートを使用しない場合でも、この属性を実稼働 Web サイトで false に設定しないでください。ビュー ステート MAC は、ビュー ステートに加えて他の ASP.NET 関数のセキュリティを確保するのに役立ちます。
私の質問:
これらの答えはすべて同じ解決策を持っているように見えますが、それらが良い解決策であるとは確信していません。どのような代替手段がありますか? 上司も私も、キーを設定することはセキュリティの観点からは良くないと思います。コードを微調整して、物事を別の方法で保存したいと思っています。他の場所でセッション状態を使用する必要がありましたが、まだ慣れていません。ある種の検証が行われる前にリフレッシュすると、同様の問題が発生しますか? リフレッシュの実行速度を遅くすることはできますか? また、キーの検証が行われる場所を変更することについても見てきました。セキュリティの観点から、そのソリューションはどうですか?