【问题标题】:Multiple Html.AntiForgeryToken (inside an HTML table)多个 Html.AntiForgeryToken(在 HTML 表中)
【发布时间】:2011-06-24 09:10:08
【问题描述】:

在我看来,我有一个循环来呈现用户列表:

foreach (var user in Model.Users.Collection)
{}

此表的其中一列是输入按钮,用于对特定用户执行某些操作。输入按钮向操作方法发出 POST 请求。

我想用 Html.AntiForgeryToken 保护它。但是,每个表格行都有一个带有输入按钮的 Html.BeginForm

<td>

            <% using(Html.BeginForm(user.IsInRole ? "RemoveUserFromRole" : "AddUserToRole", "usermanagement", FormMethod.Post)) { %>                   
            <%: Html.AntiForgeryToken("AddRemoveUser") %>
            <input name="action" type="submit" value="Update" />

            <% } %> 

            </td>

我应该如何处理这个问题?为每个 Html.BeginForm 渲染多个 Html.AntiForgeryToken?这样做是否正确?

谢谢

【问题讨论】:

    标签: asp.net-mvc model-view-controller asp.net-mvc-3 security


    【解决方案1】:

    您可以对所有令牌使用相同的盐值。

    <%: Html.AntiForgeryToken("some_random_string") %>
    

    然后您可以尝试在您发布到的两个控制器操作上应用相同的盐:

    [ValidateAntiForgeryToken(Salt = "some_random_string")]
    

    【讨论】:

    • 您是否应该考虑另一种解决方案!现在这个 Salt 已被弃用 'System.Web.Mvc.ValidateAntiForgeryTokenAttribute.Salt' 'The 'Salt' property is deprecated. To specify custom data to be embedded within the token, use the static AntiForgeryConfig.AdditionalDataProvider property.'
    猜你喜欢
    • 2016-08-21
    • 2013-02-22
    • 2011-07-10
    • 2018-12-05
    • 2018-01-04
    • 2013-01-14
    • 2017-11-30
    • 1970-01-01
    • 2012-09-02
    相关资源
    最近更新 更多