首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >验证从Jython编译的Java类的安全性

验证从Jython编译的Java类的安全性
EN

Stack Overflow用户
提问于 2014-08-04 04:44:30
回答 1查看 195关注 0票数 0

背景

我正在协助建立一个基于网络的界面,以编程简单的人工智能,其中玩游戏和竞争的其他人工智能。

系统的主要要求之一是,用户提交的代码经验证是安全的,可以在服务器上运行。也就是说,如果提交的代码访问文件系统,我们需要拒绝提交。

目前,系统使用Java作为提交语言运行,并执行字节码分析,以检查提交的代码使用的类与白名单。如果提交使用不允许的类,则该提交将被拒绝。

目前,我正在探索支持Python提交的选项,Python(使用Jython库)将其转换为针对现有系统运行的Java类。

我遇到了一些问题,涉及Java编译的Python代码。也就是说,一个简单的Python脚本(一旦编译成Java),只执行变量赋值,它似乎使用与读取和写入文件的Python类相同的类。这意味着我无法(根据使用的类)判断文件系统是否会被访问。

问题

使用Jython库将Python代码编译成Java对象是否简单地将代码包装到一个调用Python解释器并执行Python代码的类中?(如果是这样的话,字节码分析并不是解决上述问题的方法)。

如果Jython库确实创建了一个真正的Java对象,在运行时不调用Python解释器,那么如何分析对象是否试图访问文件系统?

EN

回答 1

Stack Overflow用户

发布于 2014-08-04 05:28:10

Jython与Python是同一种语言吗? 是。Jython是用于Java平台的Python语言的实现。Jython2.5实现了与CPython 2.5相同的语言,以及几乎所有的库模块。(CPython是Python语言的C实现。)Jython2.5使用与CPython相同的回归测试套件,但做了一些小修改。

https://wiki.python.org/jython/JythonFaq/GeneralInfo

因此,不需要担心调用外部python解释器。

要解决代码检查方面的问题,可以尝试使用以下http://blog.datenwerke.net/p/the-java-sandbox.html文档,其中包含了如何使用http://blog.datenwerke.net/p/java-sandbox-03-documentation.html的良好示例。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25111904

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档