0

我正在考虑使用 JSON 和 JavaScript 创建电子表格。这实际上是一个关于 JavaScript 的理论问题。

在某些情况下,当您可以使用单个函数生成一整列时,它会更有用。就像在这个例子中一样:

{
    "type": "jsheet",
    "version": "1",
    "author": "John Doe",
    "title": "Example Spreadsheet",
    "groups":
    [
        {
            "name": "Document Information",
            "columns":
            [
                {
                    "name": "Title",
                    "rows": [
                        "_.title"
                    ]
                },
                {
                    "name": "Author",
                    "rows": [
                        "_.author"
                    ]
                }
            ]
        }
        {
            "name": "Numbers 1-10",
            "columns":
            [
                {
                    "name": "Even numbers",
                    "rows": "_.range(1,10).evens()"
                },
                {
                    "name": "Odd numbers",
                    "rows": "_.range(1,10).odds()"
                }
            ]
        }
    ]
}

当您仅使用来自受信任来源且仅在您的计算机上的代码时,这似乎完全没问题。但是想想像 Google Drive 这样的云服务。如果用户粘贴不安全的代码或打开不安全的电子表格,他们可能会遇到危险。例如,脚本可以操作 DOM,甚至可以访问 cookie、执行请求等等。有没有办法在不实现自定义 JavaScript 解析器的情况下安全地防止这种情况发生?

编辑肯尼斯的回答:当然我不打算用来eval()解析文档本身。我只考虑使用eval(), 或文档中定义的函数来评估表达式。考虑使用这行脚本指定一整列的可能性:_.range(1,10).evens()_.range(10,200).filter(isprime). Where_是一个对象,它具有返回另一个对象的方法,这些对象具有相似的方法。就像 jQuery 和 d3 中的链一样。

4

1 回答 1

1

如果您使用JSON.parse,则没有问题。

当然,如果你使用eval()那么一切皆有可能。

于 2013-04-20T11:35:45.247 回答