web-dev-qa-db-ja.com

ASP.NET Viewstateは暗黙的にCSRF攻撃を防ぎますか?これはMVCにとって何を意味しますか?

暗号化されたASP.NET Viewstateがすべてのフォームと共に送信され、POSTを制御する場合、ASP.NETはこれを使用する他のソリューションよりもCSRFに対して脆弱ではないことを意味しますか?

その保護の範囲と制限は何ですか?

AntiForgeryTokenはASP.NET MVCに既定で実装されていないので、これらのサイトが危険にさらされる可能性が高いということですか?

15

ASP.NET ViewStateの目的は、ポストバック間で制御状態を維持することです( (MDSNの説明 を参照)。CSRFを妨げるセキュリティを暗黙的に有効にすることはありません。

また、パッチが適用されていない古いバージョンのASP.NETの暗号化されたViewStateは 暗号化の脆弱性 の影響を受けやすいことにも注意してください。

このタイプの保護を有効にするには、次のようにします。

ASP.NET MVC3には、コントローラーアクションの[ValidateAntiForgeryToken]属性と共に使用される偽造防止トークンがあります( http://msdn.Microsoft.com/en-us/library/system。 web.mvc.validateantiforgerytokenattribute.aspx )。ビューのformタグで、Html.AntiForgeryTokenヘルパー(次の構文で http://msdn.Microsoft.com/en-us/library/dd470175.aspx を参照)を呼び出します。

Webフォーム:

<%= Html.AntiForgeryToken() %>

かみそり:

@Html.AntiForgeryToken()
16
Bernie White

Viewstateを使用してアプリケーションにCSRF攻撃を成功させることは困難ですが、不可能ではありません。 _viewstateを使用してアプリケーションに対して成功したCSRF攻撃を行う1つの方法は、

  1. 攻撃者はアプリケーションにログインすることができます(独自のまたは取得した資格情報を使用)
  2. 彼女がCSRF攻撃を作成したいページ(最も一般的または最も有用な変数状態)にアクセスします。
  3. _Viewstateをコピーする
  4. この_viewstateを攻撃ページに挿入します
  5. 攻撃ページを被害者に送信する
  6. 運が良ければ、攻撃はうまくいくと思います

これに対するソリューションは1.1で導入されました。 _viewstateだけを使用する代わりに、ViewStateUser-Keyを使用できます。これは、セッションキーを使用して、攻撃者による推測やコピーが非常に難しい状態トークンを作成します。

私はまだあなたのアプリケーションでCSRFから保護するために独立したCSRFトークンメカニズムを実装することをお勧めします(私は多くがこれで異なるでしょう)

8
Sachin Kumar