【问题标题】:How to extend or override BeginForm to include a AntiForgeryToken field如何扩展或覆盖 BeginForm 以包含 AntiForgeryToken 字段
【发布时间】:2011-09-27 00:37:21
【问题描述】:

我正在阅读这篇关于如何防止 CSRF 攻击的文章 (http://weblogs.asp.net/dixin/archive/2010/05/22/anti-forgery-request-recipes-for-asp-net-mvc-and-ajax.aspx)。似乎解决方案是在每个表单内创建一个标签。

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

但是,我真的不想在每个表单中复制并粘贴该代码。我想扩展或覆盖 BeginForm 以创建一个自动添加 AntiForgeryToken 的 BeginSecureForm。我不确定如何在 BeginForm 和 EndForm 之间添加内容。

有什么想法吗?

【问题讨论】:

  • +1 感谢大家帮助我解决了一个模糊相关的问题。

标签: security asp.net-mvc-3 dry csrf


【解决方案1】:

您应该改用它,将令牌放在正确的位置,在表单之后:

public static MvcForm BeginAntiForgeryForm(this HtmlHelper htmlHelper)
    {
        var mvcForm = htmlHelper.BeginForm();
        htmlHelper.ViewContext.Writer.Write(htmlHelper.AntiForgeryToken().ToHtmlString());
        return mvcForm;
    }

【讨论】:

    猜你喜欢
    • 2015-12-27
    • 2022-12-03
    • 2019-01-06
    • 2014-01-29
    • 1970-01-01
    • 2011-10-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多