【问题标题】:JSON Vulnerability Protection Filter in Web ApiWeb Api 中的 JSON 漏洞保护过滤器
【发布时间】:2015-07-11 02:23:40
【问题描述】:

我在 ASP.NET Web Api 中有一个带有 AngularJS 的应用程序,我想解决 json 漏洞问题。我读了Phil Haack's article

在项目中,我想使用 JsonConvert 类将一个类对象序列化为 JSON 格式。

我阅读了Sean Kenny's solution,但由于 json.net 库中的 jsonwriter 无法序列化无效的 json 格式,因此无法使用。

有人可以给我一个提示或我可以使用什么来获取在 json 响应前面带有字符串 ")]}',\n" 的序列化 json 吗?

【问题讨论】:

    标签: c# json serialization


    【解决方案1】:

    "...确保您的 JSON 服务始终将其响应作为 非数组 JSON 对象”——Phil Haack。

    只需将 JSON 作为对象返回,而不是数组。您不需要添加这些特殊字符。换句话说,如果您的数据是一个数组,例如[1, 2, 3, 4],则不要返回该数组。而是将其包装在一个对象中并返回该对象{ d: [1, 2, 3, 4] }

    但是,如果您真的很强烈想在前面添加这些特殊字符,那么只需将其连接起来即可。 JsonConvert.SerializeObject() 返回一个字符串,所以...

    return ")]}',\n" + JsonConvert.SerializeObject(data);

    但是,在我看来,这是不必要的。

    【讨论】:

    • 感谢您的回答,我会尽快尝试。我想问点别的:在发送之前我可以用什么来捕捉响应?我尝试使用动作过滤器(OnActionExecuted 方法)和消息处理程序(Task SendAsync 方法),但响应不是 json 序列化(响应的类型仍然是类对象)。
    • 你的意思是如何在 request 发送到 serverresponse 之前捕获它发送给客户端?有关模型绑定的更多信息,请阅读here,如果有帮助请告诉我。
    • 是的。它帮助我。谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-01
    • 1970-01-01
    • 2015-05-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多