[發明專利]利用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.szxzyx.cn/pat/books/201710863685.6/2.html,轉載請聲明來源鉆瓜專利網。





