【发布时间】:2014-06-28 13:02:26
【问题描述】:
另一个问题 (String to Table in Lua) 询问了如何将格式化为表格的字符串转换为字符串,给出的答案是使用loadstring 或load 将字符串转换为一个块然后执行。
我还有一个程序,它使用http.request 下载格式类似于lua 表的文件,就像另一个问题一样:
yourTable = http.request("http://www.somesite.com/table.txt")
print(yourTable)
--yourTable is a string that is formatted like a lua table, but not a table:
a={
b = {
c = 1,
d = {
e = {
},
},
},
}
functionThatExpectsATable(yourTable) --throws error because yourTable is a string
虽然我可以使用load 或loadstring 来获取我想要的表,但这是一个潜在的安全漏洞,因为我的程序在设计上允许用户输入任何URL 来加载他们的表数据。如果他们指向 lua 代码而不是 lua 格式的表,则该代码将被执行。
如何在不执行的情况下将“表格格式的字符串”转换为表格?
【问题讨论】:
-
没有编写自己的解析器,我认为你不能。只需在沙箱中运行任何脚本,然后验证结果不包含您不想要的任何内容(例如函数),麻烦就会少一些。
-
有bitbucket.org/alexames/lon 从未尝试过。