将Lua字符串作为Lua代码执行 [英] execute lua string as lua code
本文介绍了将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屋!
查看全文