0

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

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

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

4

4 回答 4

0

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

例如,在 global.asax 中制作一个方法。一切都可以达到。

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

在这种情况下, [HttpPost] 和 $.post 可以帮助您。

于 2010-09-17T19:29:15.497 回答
0

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

于 2010-09-18T07:44:13.570 回答
0

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

你是否已经有某种形式的用户会话管理——如果有的话,使用它,尽管如果来自另一个站点的访问者也登录到你的站点,它仍然不是防弹的。

IF not ... 通过在原始页面中设置一个 cookie 来实现等效的东西,该 cookie 必须在目标操作上存在(并且有效)。

于 2010-09-17T19:37:45.950 回答
0

你与它是一个 HttpGet 请求的想法有多大的关系?如果它是一个 HttpPost,您可以使用 AntiForgeryToken 及其属性来确保它来自正确的页面,这基本上是使用 cookie 方法,但一切都很好地为您包装好了。

于 2010-09-20T10:13:56.507 回答