python如何实现接口安全_利用pypy沙箱模式实现安全的开放式Python用户编程接口的方法与流程...

本发明涉及人机交互技术领域,具体为一种利用pypy沙箱模式实现安全的开放式Python用户编程接口的方法。

背景技术:

编程是人与计算机交互最直接与高效的方式,由于其专业性与敏感性,一般产品不会提供该交互方式。但在一些允许用户高度自定义的场景,仍然需要提供可编程交互接口供用户使用。可编程交互接口一般需要支持以下功能:

词法/语法分析:根据接口定义分析用户输入,生成关键词token与AST。此功能必须充分考虑开放的接口与认可的关键词是否存在执行风险,避免最终代码在本地执行时被不法份子利用。

代码生成:进行语义分析,代码优化等工作,最终生成本地可执行代码。

代码执行:将生成的最终代码在服务器本地执行并将执行结果按定义的规则反馈给用户。最终用户收到的反馈可能是渲染好的界面,或完全受其输入指令控制的AI等。

该技术已广泛应用与Web2.0社交网站与游戏中(AI宏等)。而如何在保证接口易用的同时,有效的防止恶意代码入侵,是该技术的主要难点。

现有的操作是,设计一套DSL,提供有限的编程语言接口,保障运行时的安全性。分析用户输入的程序,转译为本地可执行程序并执行,输出结果。但是,DSL设计与开发成本高,运行效率较低。用户使用门槛高,使用前需学习该DSL的语法。一旦设计者经验不足或发生疏漏,就会产生漏洞为恶意代码侵入提供可能性。

或者用户直接输入熟悉的GPL代码,本地运行时利用虚拟机进行隔离,既是被侵入,也仅影响虚拟机内部环境。虚拟机执行完毕,输出结果后,立刻销毁。但是虚拟机启停资源消耗很高,运行效率很低,采用此方案会带来高昂的成本。

术语解释:

Python:是一种面向对象的解释型计算机程序设计语言,由荷兰人Guido van Rossum于1989年发明,第一个公开发行版发行于1991年。

用户编程接口:用户编写代码并执行返回结果的交互接口。

AST:抽象语法树(abstract syntax tree或者缩写为AST),或者语法树(syntax tree),是源代码的抽象语法结构的树状表现形式,这里特指编程语言的源代码。

Web2.0:Web2.0 是相对于Web1.0 的新的时代。指的是一个利用Web的平台,由用户主导而生成的内容互联网产品模式,为了区别传统由网站雇员主导生成的内容而定义为第二代互联网,web2.0是一个新的时代。

DSL:DSL的全称是domain-specific language,指的是针对特定应用领域而设计使用的计算机语言。

GPL:跨领域通用计算机语言。如Java, Python等。

AI:人工智能(Artificial Intelligence),英文缩写为AI。它是研究、开发用于模拟、延伸和扩展人的智能的理论、方法、技术及应用系统的一门新的技术科学。

PyPy:PyPy是用Python实现的Python解释器。

沙箱:是一个虚拟系统程序,允许你在沙盘环境中运行浏览器或其他程序,因此运行所产生的变化可以随后删除。它创造了一个类似沙盒的独立作业环境,在其内部运行的程序并不能对硬盘产生永久性的影响。其为一个独立的虚拟环境,可用以测试不受信任的应用程序或上网行为。

技术实现要素:

本发明的目的在于提供一种效率更高,安全可靠,且成本较低,方便易用的利用pypy沙箱模式实现安全的开放式Python用户编程接口的方法。技术方案如下:

一种利用pypy沙箱模式实现安全的开放式Python用户编程接口的方法,包括以下步骤:

步骤1:在Web前端或APP客户端提供一个支持Python语法的编程编辑器,作为应用层Python编程交互界面;

步骤2:将用户编写好的代码发送到可解释执行Python代码的服务器上;

步骤3:将用户上传的代码在PyPy沙箱模式中运行,并获取输出结果;

步骤4:将结果返回到应用层,响应给用户。

进一步的,所述步骤2中户编写好的代码通过HTTP/TCP通信协议来发送。

本发明的有益效果是:

1) 本发明的方法与虚拟机方案相比,由于PyPy沙箱是以进程的形式执行,执行效率和源生Python程序效率一致,执行效率比需要启动和销毁虚拟机环境的虚拟机方案高;

2) 本发明的方法与DSL方案相比,沙箱环境保证了必要的运行时隔离,不会对执行程序的服务器或服务器上的其他程序造成任何实质性改动,规避了因设计与程序漏洞导致的代码入侵与渗透风险;

3) 本发明的方法与DSL方案相比,由于减少了设计与实现DSL的过程,因此实施成本比DSL更低;

4) 本发明的方法与DSL方案相比,由于使用通用的Python语法,用户使用门槛低,文档丰富,功能强大。

具体实施方式

下面对对本发明的方案做进一步详细说明。 本实施的方法使用沙箱模式提供用户编程接口,保证程序运行环境与系统应用层,内核层完全隔离,保障服务器环境安全稳定。 该方案比传统的虚拟机方案和最近流行的docker方案都更轻量,更快速。 能在单机上实现大量编程接口。具体过程如下:

一种利用pypy沙箱模式实现安全的开放式Python用户编程接口的方法,包括以下步骤:

步骤1:在Web前端或APP客户端提供一个支持Python语法的编程编辑器,作为应用层Python编程交互界面。

步骤2:将用户编写好的代码发送到可解释执行Python代码的服务器上。

步骤3:将用户上传的代码在PyPy沙箱模式中运行,并获取输出结果。

用户提交的代码通过接口进入沙箱运行环境,在沙箱中运行并返回结果到前端,前端展示给用户或调用其他接口实际写入数据到服务器;其他写数据的接口不可在沙箱中,否则数据会写入失败。仅用户代码运行环境包裹在沙箱中,由于沙箱运行环境的约束,这些操作都仅在沙箱内模拟进行,并未实际在服务器上生效,而用户最终需要的反馈,仅为执行结果。

步骤4:将结果返回到应用层,响应给用户。

展示给用户的效果可能是根据他的代码实现的智能AI,或智能指令控制的角色,可根据环境输入做判断,智能做出响应的游戏角色,单位,机器人等。

Python通用语言特性:使用Python语言作为编程接口可省掉设计DSL的成本。Python语言易读易用,且有大量专业文档,上手容易。Python语言拥有大量的使用者,在所有通用语言普及度中,Python仅次于Java, C与C++排名第四。使用Python语言作为编程接口可降低用户学习成本,熟练的Python用户可直接进行编程作业。

PyPy沙箱对运行时环境进行隔离:PyPy的沙箱模式能提供独立隔离的运行时环境,保证允许结果不会影响服务器操作系统与其他应用程序的执行。利用此特性,能以极低的成本解决用户提交的代码在执行时的安全问题。有效的防止用户代码入侵服务器或其他进程的风险。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值