执行lua字符串作为lua代码

时间:2017-06-06 09:19:47

标签: lua require

我想与同事分享lua模块。为了获得我想要存储的最新版本的共享模块,并使用Web服务器获取它们。

我的问题是:

是否可以直接从http请求或字符串加载lua代码?

我想实现类似的目标:

module = [[
    local sharedModule = {}
    function sharedModule.greet(name) print("hello " .. name) end  
    return sharedModule
]]
greeter = require (module)
greeter.greet("john")

也许这不是正确的做法。有比这更好的方法吗?

1 个答案:

答案 0 :(得分:3)

Lua中的编程中的a whole section致力于此。您的需求将通过loadstring直接履行。

但我会仔细验证您实际执行的代码。至少,版本它(运行错误的版本很可能最终会遇到各种各样的问题,如果运行的代码取决于环境处于某种状态)。最佳校验和签名代码,并在执行任何操作之前验证签名。如果您的环境没有受到保护,这实际上是一个巨大的后门开放。

您还可以使用rings库来隔离您在 Lua环境中运行的代码。它在安全方面可能不是密不透风的,但至少应该防止收到的代码在出现问题时崩溃。