ViewStateUserKey は、一部の CSRF 攻撃を防ぐための非常に便利な機能のようです。asp.net アプリケーションでデフォルトで有効にされていないのはなぜですか?
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
経験からの結論。
ログインを要求していないページにこのキーを使用し、ログインしている他のページにいる場合、ポストバックでビューステートエラーが簡単に作成され、ページが壊れ、ポストバックが発生する可能性があります。したがって、デフォルトで有効にすることはできません。これを使用する人は、上記で説明したこのケースを知っている必要があります。