Nasıl güvenli bir Lua sanal oluşturabilir miyim?
Lua "" başvurum içeri. kullanıcı betikleri güvenli uygulanması için ideal görünüyor, değil mi?
Ancak, lua gömme çoğu örnekleri tüm standart yükleme kütüphaneleri, dahil gibi görünüyor "ıo" ve "". paket
Tercümanım bu libs hariç, ama temel kütüphane fonksiyonları içerir bile "" ve "dosya sistemi". loadfile dofile
Nasıl "" fonksiyonu? ipairs gibi basit şeyler bile olmayan bir tercüman ile biten olmadan bu gibi/blok herhangi bir güvensiz işlevleri kaldırmak,
CEVAP
setfenv) güvenilmeyen kod çalışan işlev ortamı ayarlayabilirsiniz(). İşte bir film
local env = {ipairs}
setfenv(user_script, env)
pcall(user_script)
user_script
Bu işlev sadece kendi ortamında ne erişebilir. O zaman güvenilmeyen kod erişimi (beyaz) istediğiniz açıkça işlevleri ekleyebilirsiniz. Bu durumda kullanıcı betiği sadece ipairs
ama başka bir şey (dofile
, loadfile
vb.) erişimi vardır.
Bir örnek ve lua korumalı alan hakkında daha fazla bilgi için Lua Sandboxes bkz.
Nasıl bağımlılıkları Maven kullanarak ...
Nasıl bir onaltılık dize gelen bir UİC...
Nasıl verileri kopyalamadan Oracle bir...
Nasıl benim kullanıcıların store'...
Nasıl bir anahtar deposu oluşturabilir...