通过创建不可评估("unparsable cruft")JSON来提高安全性?



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

在研究这些方法时,我遇到了谷歌的while(1);和Facebook的for(;;);然后又提到了{}&&

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

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

你的

方法是什么?你的函数是什么样的,用于使用不可解析的curft进行AJAX调用?

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

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

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

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

  JSON-text = object / array

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

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

或:

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

等。

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

相关内容

  • 没有找到相关文章

最新更新