2011-07-01 11 views
12

CSRF攻撃を防ぐ方法については、この記事(http://weblogs.asp.net/dixin/archive/2010/05/22/anti-forgery-request-recipes-for-asp-net-mvc-and-ajax.aspx)を読んでいました。解決策は、各フォーム内にタグを作成するように思えます。BeginFormを拡張して、AntiForgeryTokenフィールドを含める方法

<%: this.Html.AntiForgeryToken(Constants.AntiForgeryTokenSalt)%> 

しかし、私は本当に各フォームの中にそのコードをコピーして貼り付けたくありません。 BeginSecureFormを作成して、自動的にAntiForgeryTokenを追加するBeginFormを拡張またはオーバーライドしたいと思います。 BeginFormとEndFormの間にコンテンツを追加する方法がわかりません。

アイデア?

+0

+1皆に私は漠然と関連の問題を解決する手助けのために。 –

答えて

18

フォームの後に、適切な場所にトークンを配置するために、代わりにこれを使用する必要があります。

public static MvcForm BeginAntiForgeryForm(this HtmlHelper htmlHelper) 
    { 
     var mvcForm = htmlHelper.BeginForm(); 
     htmlHelper.ViewContext.Writer.Write(htmlHelper.AntiForgeryToken().ToHtmlString()); 
     return mvcForm; 
    } 
関連する問題