2

我有一个基本的 JsonResult 方法,在我的视图中被 jQuery $.ajax 调用调用。

    [AcceptVerbs(HttpVerbs.Post)]
    public JsonResult DoWork(string param1)
    {
        // do something important 

        return Json();
    }

所以我的问题是,这个方法可以被调用/被黑客攻击并传递错误的数据吗?假设这是在系统中创建一个新用户。我可以伪造对这个方法的调用吗?我应该如何使用某种防伪令牌或任何东西来保护这种方法?

4

2 回答 2

4

是的,你应该保护它。任何人都可以调用此方法,并传递他们想要的任何值。您应该始终不信任您收到的数据。

您当然可以使用 Authorize-attribute 来保护它:

[Authorize(Roles='...')]

或使用任何其他方式识别和授权用户。

编辑:

之前的链接已经失效了。有关 Ajax 中的 anti-forgerytoken 的更多信息,请查看这个 SO 问题:jQuery Ajax calls and the Html.AntiForgeryToken()

我还没有测试过这个。

于 2010-02-24T15:19:50.530 回答
1

是的。可以像任何其他公共控制器操作一样调用此方法。

于 2010-02-24T15:16:59.157 回答