簡體   English   中英

驗證從Jython編譯的Java類的安全性

[英]Verify safety of Java classes compiled from Jython

背景

我正在協助構建基於Web的界面,以對簡單的AI進行編程,從而可以玩游戲並與其他AI競爭。

系統的主要要求之一是驗證用戶提交的代碼可以在服務器上安全運行。 也就是說,如果提交的代碼訪問文件系統,我們需要拒絕提交。

當前,該系統使用Java作為提交語言運行,並執行字節碼分析以對照白名單檢查提交的代碼使用的類。 如果提交使用不允許的類,則提交被拒絕。

我目前正在探索支持使用Python提交的選項,這些選項(使用Jython庫)被轉換為可在現有系統上運行的Java類。

我遇到了一些問題,其中涉及Java編譯的Python代碼。 即,一個簡單的Python腳本(一旦編譯為Java),僅執行變量分配,似乎使用與讀取和寫入文件的Python類相同的類。 這意味着我無法(基於使用的類)判斷是否將訪問文件系統。

問題

使用Jython庫將Python代碼編譯為Java對象是否只是將代碼包裝到一個調用Python解釋器並執行Python代碼的類中? (如果是這樣,字節碼分析將不能解決上述問題)。

如果Jython庫確實創建了一個真正的Java對象,該對象在運行時不會調用Python解釋器,那么我如何分析該對象是否正在嘗試訪問文件系統?

Jython和Python是同一種語言嗎?

是。 Jython是Java平台的Python語言的實現。 Jython 2.5實現與CPython 2.5相同的語言,以及幾乎所有的Core Python標准庫模塊。 (CPython是Python語言的C實現。)Jython 2.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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM