【问题标题】:Security Request for JSon Result in Asp.Net MVcAsp.Net MVc 中对 JSON 结果的安全请求
【发布时间】:2010-10-26 11:39:06
【问题描述】:

我在 ASP.NET MVC 中开发了一个应用程序。这个应用程序有一个返回 JsonResult 的操作,我在客户端使用 jquery 获取它。一切正常,但我想知道,是否有任何方法可以在此操作中确保仅返回来自我的网站的请求。

有什么方法可以避免其他网站请求此操作?或者避免地址栏中的javascript(脚本注入)?

谢谢

【问题讨论】:

  • 您能否更详细地描述您的环境。您写了 1) ASP.NET MVC 应用程序 2) 您的网站 3) 其他网站和客户端。 ASP.NET MVC 应用程序是您网站的一部分,还是至少在同一网络服务器或同一服务器上运行?是在带有活动目录的 Intranet 上还是在 Internet 上工作?您是否拥有并使用任何客户端或服务器端的证书?

标签: javascript jquery asp.net-mvc security json


【解决方案1】:

简短回答:否

长答案:知道请求是否合法的唯一方法是解释请求的内容。 http 协议没有魔法。可能,最可靠的方法是检查引荐来源网址并确保它是您的网站。但要骗过那张支票并不难..

【讨论】:

    【解决方案2】:

    我还没有尝试过,但我也在考虑如何实现这一点。我目前的想法是向操作添加自定义属性,以检查请求应用程序附加到 cal 的令牌。

    令牌将由调用应用程序根据在申请使用 API 时提供给请求者的种子密钥生成。自定义属性将在操作允许或拒绝调用之前验证密钥。

    正如我所说的尚未完全形成,但正在按照这些思路思考......祝你好运,如果你想出一些东西,请确保你回帖。

    【讨论】:

      【解决方案3】:

      对于其他网站:

      • 您可以查看引荐来源网址,但这可能会被欺骗。
      • 您可以检查您是否与用户进行了活动会话。

      对于地址栏:

      • 您对此无能为力。

      【讨论】:

      • 您好 Epascarello,要评估活动会话,我如何在 MVC 中做到这一点?我需要启动一个会话来获取 SessionID 并将其作为参数传递吗?谢谢
      【解决方案4】:

      其他网站无法使用 ajax 向您的操作发出请求,因为 HTTP 不允许这样做,但仍然可以从地址栏、其他程序或任何东西调用它。

      如果您希望仅允许从网站的特定部分调用您的操作,您可以使用 html 帮助程序 AntiForgeryToken 和属性 [ValidateAntiForgeryToken],您可以在此处查看有关此的教程:http://haacked.com/archive/2009/04/02/anatomy-of-csrf-attack.aspx。这几乎就是 abarr 发布的想法。

      【讨论】:

      • 是的,但是这个动作只接受 GET。我无法通过帖子获得它,因为我需要表现。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-02
      • 2013-05-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-11-26
      相关资源
      最近更新 更多