3

我们正在考虑对我们的 json 使用不可解析的 curft 方法作为额外的安全级别。

在查看这些方法时,我遇到了 googlewhile(1);和 facebook 的for(;;);然后再提到{}&&

我已经看到围绕 1 的评论while(1);说数字 1 可能会被破坏,所以我的方法将是for(;;);.

然后我遇到了{}&&,它使 json 无效,但它仍然可以被解析/评估。请参阅本文以供参考:http ://www.sitepen.com/blog/2008/09/25/security-in-ajax/

你的方法是什么?以及使用不可解析的曲线进行 ajax 调用的函数是什么样的?

4

1 回答 1

2

我总是使用根对象。如前所述:

只能使用一个数组的根来劫持 JSON 数据。当根是基元时,基元值不会触发构造函数。当根是对象时,它不是有效的 JavaScript 语法,因此无法解析。

请注意,具有根原语(例如,您的响应只是5)不是有效的 JSON。RFC的第 2 节说:

JSON 文本是一个序列化的对象或数组。

  JSON-text = object / array

这不是太大的负担,因为我(和许多网站)通常使用信封格式。例如:

{
  "header": {...},
  "data": {...}
}

或者:

{
  "status": {...},
  "data": {...}
}

等等

在这种情况下,任何数组都只是数据的值,因此您可以提供语法上有效的 JSON,而没有任何劫持风险。

于 2012-04-25T23:19:23.693 回答