我一直在开发一个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表达式。我不从我的插件外部的源获取此数据。
这种方式出了什么问题?我为什么要改变?
自拒绝以来,我上次批准的版本已被损坏"并且无法下载。
答案 0 :(得分:1)
在处理外部数据源时,这是针对代码注入和XSS劫持的安全预防措施。始终解析传入的JSON会阻止外部actor注入数据的函数被执行(例如,如果您使用的话,就会eval()
)。
在访问使用您的插件以静态形式发送的数据的情况下,我不确定他们要防范的是什么。
现在这是一个非答案,但我将其留在这里而不是删除,因为我认为Mayken的评论值得保留。