通过创建联合国-EVAL-uatable(“不可分析克鲁夫特”)JSON提高安全性?(Increas

2019-07-29 03:36发布

我们正在使用无法解析curft方法我们JSON作为一个额外的安全级别。

在看的办法,我已经遇到谷歌的while(1); 和Facebook的for(;;) ; 然后另一提及{}&&

我看到周围的意见while(1); 是说1个为数字可以得到打一顿,所以我的做法是将成为for(;;);

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

你有什么办法? 做你的功能是什么样子制作Ajax调用与不可解析curft?

Answer 1:

我总是用一个根对象。 正如所指出的:

它是唯一可能具有根部是一个数组劫持JSON数据。 当根是一种原始的,原始的值不会触发构造。 当根是一个对象,它是无效的JavaScript语法,并且因此不能被解析。

需要注意的是有根原语(例如,您的反应是刚刚5 )是无效的JSON。 第2节的RFC说:

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

  JSON-text = object / array 

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

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

要么:

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

等等

在这种情况下,任何数组也只是数据的价值,这样你就可以成为语法上有效的JSON没有任何劫持的风险。



文章来源: Increase security by creating un-eval-uatable (“unparsable cruft”) JSON?