这是一个有效的JSON响应吗?

时间:2011-05-23 21:32:02

标签: json security rest

G'day大师,

我正在调用企业应用程序的REST API,它们将保持无名,并返回JSON,如下所示:

throw 'allowIllegalResourceCall is false.';
{
  "data": ... loads of valid JSON stuff here ...
}

这实际上是有效的JSON吗?如果(我怀疑)它不是,那么这些恶作剧是否有任何引人注目的原因?

我从应用程序供应商处收到的回复是出于安全目的而做的,但我很难理解如何提高安全性,如果有的话。

提前致谢!

彼得

6 个答案:

答案 0 :(得分:5)

根据

http://jsonlint.com/

不是。

如下所示。

{
    "data": "test"
}

他们是否希望您从上面的消息中提取JSon负载?

答案 1 :(得分:3)

它根本不是JSON格式。从你的问题看来,你似乎正在使用像JIVE :)这样的企业系统。我也面临与JIVE api相同的问题。这是他们的V3 API的问题。不标准,但以下的事情对我有用。 (我不确定你是否在谈论JIVE)

//invalid jason response... https://developers.jivesoftware.com/community/thread/2153  
 jiveResponse = jiveResponse.Replace
 ("throw 'allowIllegalResourceCall is false.';",String.Empty);                  

答案 2 :(得分:1)

这是有正当理由的:它可以防止CSRF攻击。如果您将JSON网址包含为<script>标记的目标,则同源策略不适用。这意味着恶意站点可以包含JSON API的URL,并且任何经过身份验证的用户都将成功请求该数据。

通过适当地覆盖Object.prototype和/或Array.prototype,恶意站点可以将任何数据解析为对象文字或数组文字(并且所有有效的JSON也是有效的javascript)。 throw语句可以通过<script>标记解析页面中包含的javascript来防止这种情况发生。

答案 3 :(得分:0)

绝对不是有效的JSON。也许在实现中有一个错误,即将某种调试输出与正确的输出混合在一起?

并且,这绝不是出于安全原因。在我看来这是一个普通的错误。

答案 4 :(得分:0)

throw 'allowIllegalResourceCall is false.';肯定不是有效的JSON。

报告了哪种MIME类型?

答案 5 :(得分:0)

似乎他们已添加该行以防止JSON劫持。只有在返回JSON数组时才需要类似该行来阻止JSON劫持。但他们可能已将该行添加到其所有JSON响应之上,以便于实施。

在使用它之前,你必须删除第一行,然后将剩余的解析为JSON。