2010-02-24 69 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

是的。這種方法可以像任何其他公共控制器操作一樣調用。