C# 嵌入脚本解释器时限制命名空间

标签 c# python perl scripting

我正在考虑实现一个系统,用户可以将脚本传递到我们的服务器并执行它们。值得庆幸的是,有足够的资源Embedding Python into C# 。然而,我最担心的是用户传递访问系统功能的脚本并导致不良甚至恶意结果。主要示例是:不受限制地写入服务器上的文件。

我一直在寻找一种好方法来完全限制脚本的访问,严格限制我们为客户端提供的框架类,但我发现的大多数命中基本上都是 "here's how you embed a script interpreter in C#"但从未提及任何安全问题,例如限制访问。 诚然,我可以对脚本进行初始传递并搜索任何 blacklisted code但总是有机会错过一些东西。

对于执行哪种语言没有要求,最好是可以提前编译的语言。服务器将运行 C# 来应答请求并将一些请求委托(delegate)给用户创建的代码。我只是无法找到任何限制用户编写代码访问的语言的方法。

最佳答案

我强烈建议您使用Lua ,它正是用于此类事情。每个函数,无论是用户编写的还是内置的,都是表中的一个条目,因此可以很容易地限制脚本的功能。例如,删除 io 表是防止恶意文件系统更改的简单方法。

关于C# 嵌入脚本解释器时限制命名空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15190128/

相关文章:

c# - Entity Framework 中的级联删除

python - 使用 py2 解释器时 PyCharm py3 语法问题

perl - 为什么我的 Perl 源代码显示在浏览器中?

c# - 在 SQL Server 中插入批量记录

C# 反射(reflection)为什么 GetFields 会列出我尚未创建的字段?如何排除它们?

python - 在python中取任意数量列表的交集

python - 使用 vscode 调试时如何执行设置 python 虚拟环境的 shell 脚本(我需要对 launch.json 进行哪些更改)

"it does NOT start with KEYWORD1"的正则表达式

windows - 为什么 Perl 系统调用无法调用内部 Windows 命令?

c# - OCR图像预处理