0

ViewStateUserKey は、一部の CSRF 攻撃を防ぐための非常に便利な機能のようです。asp.net アプリケーションでデフォルトで有効にされていないのはなぜですか?

4

1 に答える 1

1

私は次のことについていくつかの考えを話します:

ViewStateUserKey、有効なユーザーのビューステートを壊す可能性があり、その結果、有効なユーザーにエラーが表示されます。上級プログラマーだけがそれを使用し、ビューステートが壊れている理由を知っており、可能であればそれを処理することをお勧めします。

いくつか例を挙げましょう。

そのまま使う場合:

void Page_Init (Object sender, EventArgs e)
{ 
   if (User.Identity.IsAuthenticated)
      ViewStateUserKey = User.Identity.Name;
}

この手順を参照してください。

  • 有効なログイン ユーザーには、ログを必要としないページに GridView が表示されます。
  • このユーザーはしばらくページを離れており、ログの有効期限が切れています
  • 現在、グリッドビューのページングを試みており、ビューステート ブレークを取得しています

を使用してページを開始するためですが、ViewStateUserKey有効期限が切れた後ViewStateUserKeyは現在は異なり (ユーザーが現在ログインしていないため null)、viewstate が中断され、同時にこのページはログインする必要がなく、リダイレクトはたまたまロギングを再度要求します。

この単純な例では、それは実際に私に起こりました.

相対: ViewStateUserKey + 共有ホスティング + ViewStateMac 検証エラー

http://www.hanselman.com/blog/ViewStateUserKeyMakesViewStateMoreTamperresistant.aspx

http://msdn.microsoft.com/en-us/library/ms972969.aspx

経験からの結論。

ログインを要求していないページにこのキーを使用し、ログインしている他のページにいる場合、ポストバックでビューステートエラーが簡単に作成され、ページが壊れ、ポストバックが発生する可能性があります。したがって、デフォルトで有効にすることはできません。これを使用する人は、上記で説明したこのケースを知っている必要があります。

于 2012-09-06T07:29:15.690 に答える