如何在ASP.NET MVC中限制对[HttpGet] ActionResult的访问?

时间:2010-09-17 19:25:03

标签: asp.net-mvc security referrer actionresult http-get

想象一下,我有一个像这样的ActionResult:

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

我如何使用此停止所有其他网站,就好像它们是自己的基于REST的小服务来获取匹配城市的列表一样?检查推荐人是唯一的方法吗?或者有更好的想法吗?

4 个答案:

答案 0 :(得分:0)

如果您只在自己的项目中使用REST,为什么要使用REST?

例如,在global.asax中创建一个方法。一切都可以达到它。

另外,您是否将此用于jquery / json?

[HttpPost]和$ .post可以帮助你解决这个问题。

答案 1 :(得分:0)

你有多担心?如果某人有足够的决心,推荐人可以伪造。

您是否已经采用某种形式的用户会话管理 - 如果是这样的话,尽管如果来自其他站点的访问者也登录到您的访问者,它仍然不是防弹的。

如果不是......通过在原始页面中设置一个必须在目标操作上存在(且有效)的短期到期的cookie来实现等效的东西。

答案 2 :(得分:0)

阻止其他网站访问此操作的唯一方法是使用某种身份验证机制。您可以使用使用machineKey加密的Cookie来确保请求来自同一个域。为此,您需要有一个登录页面,它将发出身份验证cookie。

答案 3 :(得分:0)

你是如何与HttpGet请求相关的想法?如果它是一个HttpPost你可以使用AntiForgeryToken及其属性来确保它来自正确的页面,这基本上是使用cookie方法,但所有这些都很适合你。