我们正在使用无法解析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?
我总是用一个根对象。 正如所指出的:
它是唯一可能具有根部是一个数组劫持JSON数据。 当根是一种原始的,原始的值不会触发构造。 当根是一个对象,它是无效的JavaScript语法,并且因此不能被解析。
需要注意的是有根原语(例如,您的反应是刚刚5
)是无效的JSON。 第2节的RFC说:
甲JSON文本是序列化对象或数组。
JSON-text = object / array
这不是太大的负担,因为我(和很多网站)通常使用的信封格式。 例如:
{
"header": {...},
"data": {...}
}
要么:
{
"status": {...},
"data": {...}
}
等等
在这种情况下,任何数组也只是数据的价值,这样你就可以成为语法上有效的JSON没有任何劫持的风险。