代码之家  ›  专栏  ›  技术社区  ›  Charles Stewart

Lua的能力:有什么经验?

  •  35
  • Charles Stewart  · 技术社区  · 14 年前

    已经有了 some discussion on the cap-talk mailing list 围绕lua和javascript是否支持对象能力模型,得出的结论是,由于支持将环境限制为通过 setfenv 以及不可修改的对象引用的可能性,可以实现OCM。

    我们看到这是怎么回事了吗?我对从现有应用程序中删除漏洞很感兴趣,它在Lua中提供了非常有用、慷慨的脚本支持,不幸的是,这种支持允许在各种情况下完全访问shell。需要一些shell访问:对象能力模型似乎是管理事物的一种好方法。但我担心的是,在一个肯定会很混乱的实践中,这种方法实际上是可以被证实是安全的,这是多么令人信服的一个案例。

    一些链接:

    1. 老问题: How can I create a secure Lua sandbox?
    2. erights.org的背景: From Objects To Capabilities
    3. Lua维基: SandBoxes ReadOnlyTables -显示 塞特芬夫 在实际操作中;显示表后的基本思想,在适当的情况下,可以使其成为只读的
    1 回复  |  直到 14 年前
        1
  •  3
  •   Shakakai    14 年前

    我不能和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。