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