Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/312.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.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
是否有一个“问题”;“安全”;作为嵌入式脚本语言使用的Python子集?_Python_Security_Scripting_Scripting Language_Embedded Language - Fatal编程技术网

是否有一个“问题”;“安全”;作为嵌入式脚本语言使用的Python子集?

是否有一个“问题”;“安全”;作为嵌入式脚本语言使用的Python子集?,python,security,scripting,scripting-language,embedded-language,Python,Security,Scripting,Scripting Language,Embedded Language,在我创建的许多Python应用程序中,我经常创建只包含常量的简单模块作为配置文件。此外,由于配置文件实际上是一个Python代码文件,因此我可以添加简单的逻辑,根据调试级别等更改变量 虽然这对内部应用程序非常有效,但我还是要小心将此类应用程序发布到野外,以免有人意外或恶意地将破坏性代码添加到文件中。使用Python作为嵌入式脚本语言也是如此 是否有Python的一个子集被认为是用于嵌入的“安全”的?我意识到它的安全性是相当主观的。然而,Java小程序和Flash都有定义良好的安全沙箱。我想知道是

在我创建的许多Python应用程序中,我经常创建只包含常量的简单模块作为配置文件。此外,由于配置文件实际上是一个Python代码文件,因此我可以添加简单的逻辑,根据调试级别等更改变量

虽然这对内部应用程序非常有效,但我还是要小心将此类应用程序发布到野外,以免有人意外或恶意地将破坏性代码添加到文件中。使用Python作为嵌入式脚本语言也是如此

是否有Python的一个子集被认为是用于嵌入的“安全”的?我意识到它的安全性是相当主观的。然而,Java小程序和Flash都有定义良好的安全沙箱。我想知道是否有一个版本的Python有类似的规则


编辑:我的要求不是因为配置文件方法,而是因为我对在新应用程序中实现一些脚本/插件机制感兴趣,不希望插件或脚本能够(比如)删除文件。这超出了应用程序应该能够做到的范围。

pypy项目提供了沙箱功能,请参阅。

不,Python没有“安全”的生产就绪子集。Python有一些沙盒模块,由于缺陷而被弃用

最好的选择是创建自己的解析器,或者使用syscall钩子和一个被囚禁的帐户隔离python进程


有些人可能会将您指向PyPy,但它速度慢且未完成。

好的,在标准python库中进行了一些尝试,但没有成功。有关详细信息,请参阅

警告

在Python2.3中,这些模块 由于各种已知和未知原因而禁用 容易修复的安全漏洞。这个 模块仍然记录在这里,以便 帮助阅读使用 rexec和堡垒模块


以下是几个链接,让您了解您面临的问题:

  • 圭多本人
还有一个死了的谷歌代码项目

我会对发布这样的消息保持警惕 应用程序进入野外,以防 有人不是偶然的,就是 恶意添加破坏性代码 到文件中

您的“野生”本机代码同样容易受到此攻击;它出现在机器代码中只是一个减速带,没有安全性

如果你极度偏执,想要更高的speedbump,你可以让承载脚本实例的本机应用程序检查内容的散列。那么偶然的变化是不可能的;只有经过深思熟虑的更改才会遇到更新校验和的麻烦。您可以进一步检查它们是否也使用公钥签名;那么只有破解你的原生应用程序才能让新脚本进入


但是沙箱呢?别担心

您可以在Silverlight/Moonlight上尝试IronPython,这似乎令人印象深刻。关于这些类型的IronPython应用程序,Resolver One开发人员提供了大量信息。

我对Java虚拟机或.NET运行时中的安全功能知之甚少,但是,您可能需要考虑是否运行Python代码,或者可能允许您添加安全性。

< P>讨论以前遇到的代码< ReXEC < /C> >模块:


这些都来自于。

要理解你想做什么有点困难——没有足够的细节

您是否托管本机应用程序并允许用户编写插件?考虑使用OS级别的解决方案,将Python应用程序运行为监狱/科洛特/类似的单独运行时进程,并通过套接字进行通信。 您是否希望您的客户托管本机应用程序,并让“不受信任的方”编写插件?上述解决方案不起作用有什么原因吗?(例如,客户希望在没有此类选项的情况下在怪异的OSs上部署…)

您是否希望相同的人托管本机应用程序和“不受信任的脚本”,并希望保护他们不受自己的影响?从保护他们不写“os.remove”并让它做他们写的事情的意义上来说?你能解释一下原因吗


请注意,如果没有更严格的约束(最大CPU周期、最大内存、内存所有权问题……),仅使用沙箱通常是不够的?你想停止什么样的恶意?请注意,在这里,OSs也具有出色的功能(优先级、杀戮过程、ulimit),并非所有沙箱环境都能复制这些功能——而且安全测试肯定比OSs中的要少。(我相信Linux不会有可破坏的ulimit,而我相信PyPy不会让恶意程序员占用无限的内存,因为Linux在野外受到的攻击更多。)

tinypy()是一个以Lua风格编写的小型可嵌入Python子集。由于lua有一种创建沙箱的方法,我估计tinypy也可能会被同样的方法攻击。由于tinypy的代码库非常小,因此很容易学习和了解如何改变内容以满足您的需要。

如果您只需要设置简单的变量、循环、条件和函数,那么它就符合要求。PyMite很小,用C编写,使用静态内存池,可以嵌入。它的内置功能非常有限,易于配置。类似地,唯一的标准库是string、dict、list和sys的部分实现。PyMite虚拟机是python-on-a-chip项目的一部分,因此它被设计为在微控制器上运行,但可以在posix风格的桌面系统上运行。缺点是PyMite没有像其他Python实现那样广泛地消除bug。

这听起来像是您想要的:

巨蟒