2010-09-17 73 views
0

想象我有這樣一個ActionResult:如何在ASP.NET MVC中限制對[HttpGet] ActionResult的訪問?

[HttpGet] 
public ActionResult Cities(string q) 
{ 
    //Return a list of cities that matches parameter 
} 

如何使用這個,彷彿這是他們自己小的基於REST的用於獲得匹配的城市列表服務停止所有其他網站除了我的嗎?檢查推薦人是唯一的出路嗎?還是有更好的想法?

回答

0

如果您只在自己的項目中使用REST,爲什麼要使用REST?

例如在global.asax中創建一個方法。一切都可以達到它。

另外,你用這個jQuery/json?

在這種情況下,[HttpPost]和$ .post可以幫助你。

0

你有多擔心?如果有人足夠確定,推薦人可能是僞造的。

你是否已經有了某種形式的用戶會話管理 - 如果這樣使用的話,儘管如果來自其他站點的訪問者也登錄了你的用戶會話管理,它仍然不是防彈的。

如果不是......通過在原始頁面中設置一個cookie,並且在目標操作中必須存在(並且有效)很短的到期時間來實現相同的功能。

+0

感謝您的想法,Rob。我一直在想,cookie路線可能是一條可行的路,可以慢慢接近CSRF攻擊緩解的方式,但所有想法都是受歡迎的。 – 2010-09-17 19:42:13

0

防止其他網站訪問此操作的唯一方法是使用某種身份驗證機制。您可以使用您的machineKey加密的cookie來確保請求來自同一個域。爲了這個工作,你需要有一個登錄頁面,它將發出認證cookie。

0

如何綁定到它是一個HttpGet請求的想法是你?如果它是一個HttpPost,你可以使用AntiForgeryToken及其屬性來確保它來自正確的頁面,這基本上使用cookie方法,但都很好地包裝了你。

相關問題