我正在制作一个名为GopalOS的“网络桌面”(网络桌面),位于以下位置:https://cerebraldatabank.neocities.org/gopalos.html
正如您在源代码中看到的那样,基本的JSON文件系统的结构如下:
{
"folder": {
type: "dir",
content: {
"config": {
type: "cfg",
content: "key=val"
},
"program": {
type: "pgm",
content() {
alert("Hello World");
(v => {alert(v);})("Test Text");
}
}
}
}
}
不幸的是,由于JSON.parse
命令不支持JS函数,因此我需要一种安全的方法来从远程URL 导入JSON对象,而无需运行任何代码。当前代码使用eval(eval为邪恶的情况)。远程网站可能托管着以下恶意文件(来自here):
{
"name": "Test Program",
"id": "test-program",
"app-dir": {
type: "dir",
content: {
"oof": {
type: "pgm",
content() {
msgbox(`Hello world! Your OS version is ${getRef("/version")}`);
},
ACE: eval(`document.getElementById("logo").innerHTML = "h4xx0r3d"`)
}
}
}
}
请注意,在解析JSON对象时,eval
如何执行ACE
键中的代码(表示任意代码执行)。我需要一种安全的方法来将具有上述功能的JSON对象导入GopalOS页面上的JSON对象或变量中,而无需运行任何代码。
答案 0 :(得分:0)
JSON不支持来自以下位置的函数:https://tools.ietf.org/html/rfc8259:
JavaScript Object Notation(JSON)是一种轻量级的基于文本的, 语言无关的数据交换格式
JSON是基于文本的格式,也许您可以尝试将函数作为字符串发送,然后使用“ eval
”执行,例如:
{ myFunction: "function() { alert('hello world'); } " }