将Lua字符串作为Lua代码执行 [英] execute lua string as lua code

查看:20
本文介绍了将Lua字符串作为Lua代码执行的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想与同事分享Lua模块。为了获取最新版本的共享模块,我希望使用Web服务器存储和获取它们。

我的问题是:

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

我想实现这样的目标:

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

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

推荐答案

在Lua的编程中有a whole section专门用于此目的。您的需求将通过loadstring直接满足。

不过,我会仔细验证您实际执行的代码。至少,对其进行版本化(如果运行的代码依赖于环境处于某种状态,则运行错误的版本很可能会导致各种问题)。最好对代码进行校验和签名,并在执行任何操作之前验证签名。如果您的环境不受保护,这实际上是一个巨大的后门打开。

您还可以使用rings库来隔离您在Lua环境本身中运行的代码。它在安全方面可能不是无懈可击的,但至少应该防止收到的代码在应用程序出错时使其崩溃。

这篇关于将Lua字符串作为Lua代码执行的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆