有沒有辦法限制在嵌入式解釋器下運行的python腳本的能力?具體而言,我希望阻止腳本執行以下操作:限制嵌入式python實例的功能
- 導入python擴展模塊(即.pyd模塊),除了應用程序特別允許的模塊。
- 以任何方式操作進程(即啓動新進程或終止應用程序)。
- 任何類型的網絡。
- 操作文件系統(例如創建,修改和刪除文件)。
有沒有辦法限制在嵌入式解釋器下運行的python腳本的能力?具體而言,我希望阻止腳本執行以下操作:限制嵌入式python實例的功能
不。有沒有簡單的方法來阻止CPython的這些東西。你的選擇是:
嗯,我不會擔心腳本崩潰/凍結應用程序,更多的時候,一個敵意的插件說,從互聯網上下載並執行文件,更改系統設置等。 我想我可以編輯CPython實現,對於某些事情,我想只是不編譯模塊開始將是合適的,如果我想我可以掛鉤模塊加載器來檢查安全pyd模塊的白名單。 是否有任何信息在簡單地從python編譯中刪除模塊/對象? – 2010-01-05 14:03:27
也許this會有所幫助。你有一個關於如何使用ast的例子。
「ACCESS DENIED」,我真的很討厭大學的互聯網限制......稍後當我回家時會檢查這個。 – 2010-01-05 13:59:07
你想要什麼谷歌的Unladen Swallow項目,運行Python版本App Engine。
模塊受到嚴格限制,不允許使用,套接字與某些策略或其他內容匹配,換句話說,您將得到一個沙盒版本的Python,符合其Java產品。
我想指出,這使得系統幾乎沒用。對於比另一個[App Engine]應用程序更酷的任何東西都沒用。忘記猴子補丁系統模塊,甚至訪問自己的堆棧也受到限制。完全沒有動態的。
OT:遊戲通常將LUA嵌入腳本中,也許你應該檢查它。
是http://pypi.python.org/pypi/RestrictedPython/的一個選項嗎? – diciu 2010-01-05 12:22:14