我们正在考虑对我们的json使用不可解析的curft方法作为额外的安全级别。
在研究这些方法时,我遇到了谷歌的while(1);和脸书的for(;;);然后又提到了{}&&
我看过围绕while(1);的评论,说数字1可能会被击败,所以我的方法是使用for(;;);。
然后我遇到了{}&&,它将json呈现为无效的,但它仍然可以被解析/求值。请参阅本文以供参考:http://www.sitepen.com/blog/2008/09/25/security-in-ajax/
你的方法是什么?使用无法解析的curft进行ajax调用时,您的函数看起来像什么?
发布于 2012-04-26 07:19:24
我只是一直使用根对象。如上所述:
JSON只有可能通过一个数组的根来劫持
数据。当根是基元时,基元值不会触发构造函数。当根是一个对象时,它不是有效的JavaScript语法,因此不能被解析。
请注意,具有根原语(例如,您的响应只是5)不是有效的JSON。the RFC的第2节说:
文本是序列化的对象或数组。
JSON-text =对象/数组
这并不是什么负担,因为我(和许多站点)通常使用信封格式。例如:
{
"header": {...},
"data": {...}
}或者:
{
"status": {...},
"data": {...}
}等。
在这种情况下,任何数组都只是数据的值,所以您可以提供语法上有效的JSON,而不会有任何劫持风险。
https://stackoverflow.com/questions/10325100
复制相似问题