JsonRequestBehavior 枚举, RESTful, JSON Hijacking, JavaScript Hijacking, CSRF

创建时间:
2014-02-01 23:16
最近更新:
2018-09-09 23:23

ToDo

以下 "JsonRequestBehavior 枚举" 很明确地传递了一个信息:服务器应仅面向 POST 而非 GET 来公开 JSON 数据。这与 RESTful 依赖 POST/GET/PUT/DELETE 等来区别请求的意图,存在矛盾。

此问题,留待学习 RESTful 时再解决。截至 2014-02-01,TonyCms 中有部分 JSON 未严格遵照 RESTful,而是使用了 POST 来代替 GET。

《JsonRequestBehavior 枚举》

默认值为 DenyGet。允许 GET 请求可能会导致用户在某一网站中仍处于已登录状态时访问另一个网站。这可能会生成导致信息泄漏的安全漏洞。有关此漏洞的信息,请参见 Phil Haack 的博客上的文章 JSON Hijacking
-- http://msdn.microsoft.com/zh-CN/library/System.Web.Mvc.JsonRequestBehavior

JSON Hijacking

http://blog.csdn.net/tenfyguo/article/details/6024851
http://drops.wooyun.org/papers/42

JavaScript Hijacking

http://www.cnblogs.com/hyddd/archive/2009/07/02/1515768.html

CSRF (Cross Site Request Forgery, 跨站请求伪造)

详见本站专文

Source Code of System.Web.Mvc.JsonRequestBehavior from JetBrains dotPeek 1.0 at 2018-09-09

Complete Copy:

// Type: System.Web.Mvc.JsonRequestBehavior
// Assembly: System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35
// Assembly location: C:\Windows\Microsoft.NET\assembly\GAC_MSIL\System.Web.Mvc\v4.0_4.0.0.0__31bf3856ad364e35\System.Web.Mvc.dll

namespace System.Web.Mvc
{
  public enum JsonRequestBehavior
  {
    AllowGet,
    DenyGet,
  }
}

"Visual Studio 2013" 中 "JsonRequestBehavior - 右键菜单 - 转到定义" 的全部内容

#region 程序集 System.Web.Mvc.dll, v5.0.0.0
// D:\Test\CodeGen\trunk\packages\Microsoft.AspNet.Mvc.5.0.0\lib\net45\System.Web.Mvc.dll
#endregion

using System;

namespace System.Web.Mvc
{
    // 摘要: 
    //     指定是否允许来自客户端的 HTTP GET 请求。
    public enum JsonRequestBehavior
    {
        // 摘要: 
        //     允许来自客户端的 HTTP GET 请求。
        AllowGet = 0,
        //
        // 摘要: 
        //     不允许来自客户端的 HTTP GET 请求。
        DenyGet = 1,
    }
}