[发明专利]利用pypy沙箱模式实现安全的开放式Python用户编程接口的方法在审
申请号: | 201710863685.6 | 申请日: | 2017-09-22 |
公开(公告)号: | CN107704757A | 公开(公告)日: | 2018-02-16 |
发明(设计)人: | 周振华 | 申请(专利权)人: | 成都知道创宇信息技术有限公司 |
主分类号: | G06F21/53 | 分类号: | G06F21/53;G06F8/30;G06F9/455 |
代理公司: | 成都信博专利代理有限责任公司51200 | 代理人: | 刘凯 |
地址: | 610000 四川省成*** | 国省代码: | 四川;51 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 利用 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程序效率一致,执行效率比需要启动和销毁虚拟机环境的虚拟机方案高;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于成都知道创宇信息技术有限公司,未经成都知道创宇信息技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201710863685.6/2.html,转载请声明来源钻瓜专利网。