向ASP.NET MVC JsonResult添加无法解析的代码段

4

鉴于这些帖子:

JSON不可解析的垃圾数据:为什么那么严重?

为什么人们在JSON响应前面加入像“throw 1; <dont be evil>”和“for(;;);”这样的代码?

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

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

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

1个回答

3
您可以编写自定义操作结果来执行此操作:
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,
    };
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接