2010-02-24 63 views
2

我有一个基本的JsonResult方法,在我的视图中被一个jQuery $ .ajax调用调用。jQuery ASP.NET MVC JSON调用hackable?

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

     return Json(); 
    } 

所以我的问题是,这种方法可以调用/黑客入侵并通过错误的数据?假设它是在系统中创建一个新用户。我可以假装拨打这个方法吗?我应该如何保护这种方法使用某种反伪造令牌或任何东西?

+0

相关:在MVC3黑客(或防止)JSON攻击http://stackoverflow.com/questions/4914994/using-mvc3s-antiforgerytoken-in-http-get-to-avoid-javascript-csrf-vulnerability – LamonteCristo 2011-02-06 20:19:49

回答

4

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

你可以使用授权属性ofcourse将其固定:

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

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

编辑:

上的链接不能正常工作了。欲了解更多有关Ajax中的防伪功能的信息,请查看以下SO问题:jQuery Ajax calls and the Html.AntiForgeryToken()

虽然我还没有测试过。

+0

正确但可以说我没有角色和这样的定义,有无论如何,我可以使用反伪造令牌? – aherrick 2010-02-24 15:22:21

+0

没有角色,你怎么知道谁可以添加用户,谁不是? – Pbirkoff 2010-02-24 15:36:14

+0

我只是举一个添加用户的例子。我无法保护它,所以我知道它是从合法要求的角度来看的? – aherrick 2010-02-24 16:07:03

1

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