1

将使用 AntiForgeryToken 涵盖 POST 操作方法中的授权规则我有以下 Create.cshtml 视图用于创建新订单:-

@using (Html.BeginForm()) {
    @Html.AntiForgeryToken()
    @Html.ValidationSummary()

    <fieldset>
        <legend>Create New Order</legend>
        <ol>
            <li>
                @Html.LabelFor(m => m.OrderName)
                @Html.TextBoxFor(m => m.OrderName)
            </li>
            <li>
                @Html.LabelFor(m => m.OrderType)
                @Html.TextBoxFor (m => m. OrderType)
            </li>
            <li>
                @Html.LabelFor(m => m.OrderDate)
                @Html.TextBoxFor(m => m. OrderDate)
            </li>
        </ol>
        <input type="submit" value="Create" />
    </fieldset>
}

调用以下 GET 操作方法时将呈现上述视图:-

[Authorize (Roles="customerservice")]
        public ActionResult Create()
        {
            return View("Create");
        }

POST 操作方法是:-

     //
        // POST: /Create

        [HttpPost]

        [ValidateAntiForgeryToken]
[Authorize (Roles="customerservice")]
        public ActionResult Create(Order r)
        {

            // Code goes here
            return View(model);
        }

现在我的问题如下: -

  1. 因为我在我看来使用的是 Antiforgery 令牌,所以我将保证对“POST:/ Create”的任何有效调用都已完成;从应用程序本身 + 当用户在 Create 视图内时,这意味着用户在 customerservice 角色下。

  2. 那么这是否意味着如果我从 POST Create 操作方法中删除授权属性,那么我仍然安全吗?因为如果应用程序收到“POST:Create”请求,那么这意味着用户已经获得“Get:/Create”操作方法的授权,并且该请求是从 Create 视图发送的?关于上述问题的任何评论。最好的祝福

4

1 回答 1

1

AntiForgeryToken由三个项目组成:

  • 动作属性
  • 视图中的辅助方法
  • 曲奇饼

AntiForgeryToken每个请求都不是唯一的,因此如果未登录用户,则存在潜在风险。

于 2012-11-11T14:18:00.993 回答