2010-09-17 61 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方法,但都很好地包装了你。

相关问题