暗号化されたASP.NET Viewstateがすべてのフォームと共に送信され、POSTを制御する場合、ASP.NETはこれを使用する他のソリューションよりもCSRFに対して脆弱ではないことを意味しますか?
その保護の範囲と制限は何ですか?
AntiForgeryTokenはASP.NET MVCに既定で実装されていないので、これらのサイトが危険にさらされる可能性が高いということですか?
ASP.NET ViewStateの目的は、ポストバック間で制御状態を維持することです( (MDSNの説明 を参照)。CSRFを妨げるセキュリティを暗黙的に有効にすることはありません。
また、パッチが適用されていない古いバージョンのASP.NETの暗号化されたViewStateは 暗号化の脆弱性 の影響を受けやすいことにも注意してください。
このタイプの保護を有効にするには、次のようにします。
ViewStateUserKeyを使用します(機能の 高レベルの説明 、 ViewStateUserKeyのMSDNドキュメント および OWASP CSRF防止のチートシート を参照してください)。
カスタムメソッドを使用して、フォームでカスタムマネージド非表示フィールドを(トランザクションごとに)レンダリングし、各クライアント要求で確認します。
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()
Viewstateを使用してアプリケーションにCSRF攻撃を成功させることは困難ですが、不可能ではありません。 _viewstateを使用してアプリケーションに対して成功したCSRF攻撃を行う1つの方法は、
これに対するソリューションは1.1で導入されました。 _viewstateだけを使用する代わりに、ViewStateUser-Keyを使用できます。これは、セッションキーを使用して、攻撃者による推測やコピーが非常に難しい状態トークンを作成します。
私はまだあなたのアプリケーションでCSRFから保護するために独立したCSRFトークンメカニズムを実装することをお勧めします(私は多くがこれで異なるでしょう)