Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Security Lua的能力:有什么经验?_Security_Lua_Environment Variables_Sandbox_Capability - Fatal编程技术网

Security Lua的能力:有什么经验?

Security Lua的能力:有什么经验?,security,lua,environment-variables,sandbox,capability,Security,Lua,Environment Variables,Sandbox,Capability,关于Lua和Javascript是否支持对象能力模型一直存在争议,其结论是,由于支持通过setfenv将环境限制为调用函数,并且可能存在对不可变对象的不可伪造引用,因此可以实现OCM 我们看到这是怎么回事了吗?我感兴趣的是通过Lua中非常有用、慷慨的脚本支持来消除现有应用程序中的漏洞,不幸的是,Lua在各种情况下都允许完全的shell访问。需要一些shell访问:对象能力模型似乎是管理事物的好方法。但我担心我能让一个案例多么有说服力,证明这种方法在肯定是混乱的实践中实际上是可验证的安全的 一些链

关于Lua和Javascript是否支持对象能力模型一直存在争议,其结论是,由于支持通过
setfenv
将环境限制为调用函数,并且可能存在对不可变对象的不可伪造引用,因此可以实现OCM

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

一些链接:

  • 问题:
  • erights.org上的背景:
  • Lua wiki:和-显示动作中的
    setfenv
    ;显示了表格背后的基本思想,在适当的情况下,这些表格可以设置为只读

  • 我不能和Lua交谈,但对于Javascript,Caja有工具来创建适当的沙箱,限制对特定函数的访问。最初创建它是为了为HTML/JS小部件(如iGoogle上使用的小部件)构建一个沙盒

    以下是他们主页上的项目说明:

    Caja(发音为“KA-ha”)是一种 西班牙语的意思是盒子,银行, 收银机、金库;容器 贵重物品web开发人员使用 传统的工具,比如HTML, JavaScript和CSS;Caja提供 采用 web应用程序并生成 “哄骗”HTML web应用程序。这个 cajoler试图验证安全性 通过静态分析, 如果它不能重写 输入以添加运行时检查

    因为web应用程序是通用的 浏览器API,例如DOM API, 这给了我们巨大的控制力 在网页上,Caja提供了驯服的 虚拟化部分应用程序的API 多姆。包含页面可以设置 嵌入应用程序的环境以便 嵌入式应用程序认为 它与 整页,但实际上只是 操纵对象的有界部分 通过称为 虚拟iframe

    用于创建Caja应用程序的JavaScript 使用写入故障停止子集 JavaScript(实际上是ECMAScript 5)。 该子集称为“Valija”,包括 几乎整个JavaScript语言, 但消除了一些容易出错的错误 构造,例如with和restricts 如何使用eval


    听起来你好像已经做完作业了。你到底错过了什么?我认为Lua绝对能够支持OCM。至少,您可以自己编辑liolib.c和loslib.c的源代码。它应该相对简单,因为那里的代码没有那么复杂。+1提醒我cap talk邮件列表:)我只想指出,
    setfenv
    将被弃用,取而代之的是
    \u ENV
    变量和从Lua:@Zecc:5.2版开始的
    loadin
    函数,“C函数不再具有环境。如果需要在多个C函数之间保持共享状态,请在共享表中使用upvalue。(您可以使用luaL_setfuncs打开一个C库,其中所有函数共享一个公共upvalue。)“如果我正确理解了这个项目,我们的想法是我们有一个Javascript子集Cajita,它是用一种方言编写的,以一种能力传递的方式限制对数据的访问。我的第一印象是,对于我心目中的重构任务来说,这将是一个非常繁重的功能应用程序,它并没有真正回答基于功能的安全模型在玩具示例之外看起来是什么样子的问题。但是看看典型的Javascript是如何被重构成Cajita的可能是有益的。