我不能和Lua说话,但是对于Javascript,Caja有工具来创建一个合适的沙盒,限制了对某些函数的访问。它最初是为HTML/JS小部件(如iGoogle上使用的小部件)构建沙盒而创建的。
http://code.google.com/p/google-caja/
以下是他们主页上的项目说明:
caja(发音为“ka ha”),是
西班牙语单词,意思是box,bank,
金库收银机
贵重物品。Web开发人员使用
像HTML这样的传统工具,
javascript和css;caja提供
一个编译器(一个“诱骗者”)。
Web应用程序并生成
“哄骗”HTML Web应用程序。这个
哄骗者试图验证安全性
通过静态分析得出的特性,
如果它不能重写
输入以添加运行时检查。
因为Web应用程序经常使用
浏览器API,例如dom API,
这给了我们很大的控制权
在网页上,caja提供了
虚拟化
DOM。包含页面可以设置
嵌入应用程序的环境,因此
嵌入式应用程序认为
它正在与
整页,但实际上只是
操作
通过名为
虚拟iframes。
一个caja应用程序
在故障停止子集中写入使用
javascript(实际上是ecmascript5)。
此子集称为“valija”,包括
几乎是整个JavaScript语言,
但消除了一些容易出错的问题
构造,如with和restricts
如何使用eval。