哪些编程语言支持在有限的安全模式下运行,有哪些已知问题存在?
2021-10-12 23:31:2
收藏:0
阅读:145
评论:1
我想允许用户对服务器端程序进行脚本/编程。虽然我正在寻求 建议 关于如何在系统管理方面减轻安全风险,但我也想知道有哪些编程语言提供了限制用户执行危险代码的功能?
虽然我将讨论 Lua 和 Tcl,但我对其他选项也非常感兴趣;我喜欢学习新的编程语言,并且有选择余地可以选择最适合用户的编程语言是非常好的。
Lua:
Lua 具有 沙盒 功能。
作为需要开发者考虑的一个 Lua 问题的例子,有这个网页 https://www.corsix.org/content/malicious-luajit-bytecode,它介绍了字节码作为攻击的一种方法。
Tcl:
Tcl 具有创建“安全解释器”的能力: https://www.tcl-lang.org/man/tcl8.6/TclCmd/interp.htm#M12
如果指定了 -safe 开关(或者父解释器是安全解释器),则新的子解释器将作为具有有限功能的安全解释器创建;否则,子解释器将包括 Tcl 内置命令和变量的完整集合。
我没有找到关于需要开发者考虑 Tcl 的问题的太多信息。
还有哪些具有类似功能的编程语言?它们在这方面有没有已知的问题?
原文链接 https://stackoverflow.com/questions/69548046
点赞
评论区的留言会收到邮件通知哦~
推荐文章
- 如何在roblox studio中1:1导入真实世界的地形?
- 求解,lua_resume的第二次调用继续执行协程问题。
- 【上海普陀区】内向猫网络招募【Skynet游戏框架Lua后端程序员】
- SF爱好求教:如何用lua实现游戏内调用数据库函数实现账号密码注册?
- Lua实现网站后台开发
- LUA错误显式返回,社区常见的规约是怎么样的
- lua5.3下载库失败
- 请问如何实现文本框内容和某个网页搜索框内容连接,并把网页输出来的结果反馈到另外一个文本框上
- lua lanes多线程使用
- 一个kv数据库
- openresty 有没有比较轻量的 docker 镜像
- 想问一下,有大佬用过luacurl吗
- 在Lua执行过程中使用Load函数出现问题
- 为什么 neovim 里没有显示一些特殊字符?
- Lua比较两个表的值(不考虑键的顺序)
- 有个lua简单的项目,外包,有意者加微信 liuheng600456详谈,最好在成都
- 如何在 Visual Studio 2022 中运行 Lua 代码?
- addEventListener 返回 nil Lua
- Lua中获取用户配置主目录的跨平台方法
- 如何编写 Lua 模式将字符串(嵌套数组)转换为真正的数组?
在基本的安全解释器中,所有涉及到外部世界的操作(如
open
,exec
,source
,load
,socket
等等)都被隐藏(一种特殊的命名方式,意味着它们不能从解释器内部访问),从而使安全解释器默认情况下只会因为使用过度的内存或 CPU 导致一些可能的问题。那么如何让安全解释器实际执行一些有用的操作呢?
嗯,每个安全解释器都有一个完全启用的父解释器,它可以创建解释器间别名:在安全解释器中调用控制父解释器的定义替代物的命令。可以将这些命令视为类似于系统调用(尽管更便宜!),它们可以提供应用程序希望支持的操作。当然,如果您使用这些命令的参数并打算将其视为文件名或网络地址,则需要进行一些实质性的注意,但您至少知道您只会按照预期的方式进行操作。(避免文件名问题的常见方法是仅支持抽象句柄-父级定义的简单名称,其意义仅为“您可以在这些操作中使用此名称”。这基本上就是 Tcl 的 I/O 通道句柄的工作方式。)
还有完整的 Safe Tcl 内置包,它在安全解释器中提供了一个模拟的完整解释器,允许定义可以访问的概要(例如,仅从定义的本地包存储库中读取包)。我不太确定这是否正确;它内部相当复杂。