关于 Lua 和 Javascript 是否支持对象能力模型的邮件列表上有一些讨论,cap-talk
结论是由于支持将环境限制为通过 调用的函数setfenv
,以及对不可变对象的不可伪造引用的可能性,OCM 可能是实施的。
我们看到这是怎么回事了吗?我有兴趣在 Lua 中通过非常有用、慷慨的脚本支持从现有应用程序中删除漏洞利用,不幸的是,它允许在各种情况下完全访问 shell。需要一些 shell 访问权限:对象能力模型似乎是管理事物的好方法。但我担心我能做出多么令人信服的案例,即这种方法在肯定会变得混乱的实践中实际上是可验证的安全的。
一些链接:
- 较早的 SO 问题:如何创建安全的 Lua 沙箱?
- erights.org 的背景:从对象到能力
- Lua wiki:SandBoxes和ReadOnlyTables -
setfenv
实际展示;显示表格背后的基本思想,在适当的情况下,可以将其设为只读