通过创建无法解析的(“不可解析的碎片”)JSON 增加安全性?

10 浏览
0 Comments

通过创建无法解析的(“不可解析的碎片”)JSON 增加安全性?

我们正在考虑使用无法解析的 curft 方法作为我们 JSON 的额外安全层。

在研究各种方法时,我发现了 Google 的 while(1); 和 Facebook 的 for(;;),还有一个提到 {}&& 的。

我看到了有关 while(1); 的注释,说数字 1 可能会被覆盖,所以我的方法打算用 for(;;);

然后我发现了 {}&&,它使 JSON 无效,但仍然可以解析/评估。有关参考,请参阅此文章:http://www.sitepen.com/blog/2008/09/25/security-in-ajax/

你们的方法是什么?使用无法解析的 curft 时,你们的函数是什么样子的?

admin 更改状态以发布 2023年5月21日
0
0 Comments

我通常使用一个根对象。如下所述:

只有当根为数组时,才有可能劫持JSON数据。当根为基本类型时,基本类型的值不会触发构造函数。当根为对象时,它不是有效的JavaScript语法,因此无法解析。

请注意,仅有根基本类型(例如,您的响应仅为5)是无效的JSON。 RFC的第2节声明:

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

  JSON-text = object / array

这并不是什么负担,因为我(以及许多网站)通常使用“信封”格式。例如:

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

或者:

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

等等。

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

0