我们正在考虑使用不可解析的弯曲方法将json作为额外的安全级别。
在查看方法时,我遇到了谷歌的while(1);
和Facebook的for(;;)
;然后又提到{}&&
我看到围绕while(1);
的评论说1是数字可以被破坏,所以我的方法将是for(;;);
。
然后我遇到了{}&&
,它使json无效但仍然可以解析/评估。请参阅此文章以供参考:http://www.sitepen.com/blog/2008/09/25/security-in-ajax/
你的方法是什么?使用不可解析的曲线进行ajax调用时,你的函数是什么样的?
答案 0 :(得分:2)
我总是使用根对象。如上所述:
只能使用作为数组的根来劫持JSON数据。 当根是基元时,原始值不会触发a 构造函数。当根是一个对象时,它不是有效的JavaScript 语法,因此无法解析。
请注意,拥有根原语(例如,您的响应只是5
)是无效的JSON。 the RFC的第2节说:
JSON文本是序列化对象或数组。
JSON-text = object / array
这不是一个负担,因为我(和许多网站)通常使用信封格式。 E.g:
{
"header": {...},
"data": {...}
}
或:
{
"status": {...},
"data": {...}
}
等
在这种情况下,任何数组都只是数据的值,因此您可以在没有任何劫持风险的情况下提供语法上有效的JSON。