为什么要将数据存储在JSON而不是JavaScript对象文字/初始化器中?

时间:2016-07-31 02:03:59

标签: javascript firefox-addon

我一直在开发一个Firefox插件一年。

我的上一次更新被拒绝,因为他们希望我将您的对象/模式存储在非可执行的JSON文件中,并通过XHR或SDK API(如果适用)加载和解析,如下例所示:& #34;

var data = require('sdk/self').data;
var myJSON = JSON.parse(data.load('dir/file.json'));

我总是将我的数据存储在JavaScript对象初始值设定项中,甚至从未收到警告。

有问题的数据目前在我的插件中的JavaScript文件中表示为一个或多个object literal/initializer表达式。我从我的插件外部的源获取此数据。

这种方式出了什么问题?我为什么要改变?

自拒绝以来,我上次批准的版本已被损坏"并且无法下载。

1 个答案:

答案 0 :(得分:1)

在处理外部数据源时,这是针对代码注入和XSS劫持的安全预防措施。始终解析传入的JSON会阻止外部actor注入数据的函数被执行(例如,如果您使用的话,就会eval())。

在访问使用您的插件以静态形式发送的数据的情况下,我不确定他们要防范的是什么。

现在这是一个非答案,但我将其留在这里而不是删除,因为我认为Mayken的评论值得保留。