簡體   English   中英

Lupa可以用來在python中運行不受信任的lua代碼嗎?

[英]Can Lupa be used to run untrusted lua code in python?

假設我使用register_eval=False創建LuaRuntime ,並使用attribute_filter來阻止訪問除少數python函數之外的任何內容。 假設lua代碼無法執行os.system("rm -rf *")或類似的東西是否安全?

從查看Lupa文檔

限制Lua訪問Python對象

Lupa提供了一種控制Python對象訪問的簡單機制。 每個屬性訪問都可以通過過濾函數傳遞,如下所示......

它沒有說任何關於防止或限制Lua本身提供的設施的訪問。 如果沒有對LuaRuntime環境進行其他修改,那么lua腳本確實可以執行類似os.execute("rm -rf *")

要控制lua腳本在哪種環境中工作,可以使用setfenvgetfenv在運行腳本之前對腳本進行沙箱處理。 例如:

import lupa
L = lupa.LuaRuntime()
sandbox = L.eval("{}")
setfenv = L.eval("setfenv")

sandbox.print   = L.globals().print
sandbox.math    = L.globals().math
sandbox.string  = L.globals().string
sandbox.foobar  = foobar
# etc...

setfenv(0, sandbox)

現在執行類似L.execute("os.execute('rm -rf *')")將導致腳本錯誤。

暫無
暫無

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

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