将不可解析的垃圾添加到 MVC JsonResult ASP.NET

Add unparsable cruft to ASP.NET MVC JsonResult

本文关键字:MVC JsonResult ASP NET 添加 不可解      更新时间:2023-09-26

鉴于以下帖子:

JSON无法解析的拐杖:为什么这么严重?

为什么人们把代码放在"扔1;<不要作恶>"和"for(;;);" 在 JSON 响应面前?

为什么 Google 会在 while(1); 前面加上他们的 JSON 响应?

我想遵循以下答案中列出的建议:Web 应用程序开发人员应该如何防御 JSON 劫持?

有没有一种简单的方法可以将不可解析的垃圾添加到使用 System.Web.Mvc.JsonResult 构建的 JSON 响应中?security.se帖子建议我在回复开始时使用</*

您可以编写自定义操作结果来执行此操作:

public class SafeJsonResult: JsonResult
{
    public override void ExecuteResult(ControllerContext context)
    {
        context.HttpContext.Response.Write("</*");
        base.ExecuteResult(context);
    }
}

然后使用它而不是默认的:

public ActionResult Index()
{
    return new SafeJsonResult
    {
        Data = new { Foo = "bar" },
        JsonRequestBehavior = JsonRequestBehavior.AllowGet,
    };
}