我正在設計一個系統,它將在服務器上運行用戶提交的python腳本。該腳本旨在只能訪問幾個白名單模塊,而不是其他任何東西。是否可以在不使用「導入」或「eval」的情況下在python中導入模塊?
一種安全實現此類系統的方法是通過刪除所有模塊並覆蓋「導入」的基本機制來構建自定義python解釋器,以便只能導入所選模塊,如here所述。但是這種方法需要我做很多工作。
另一種方法是預處理腳本並檢查關鍵字「import」和「eval」是否存在。如果存在這些關鍵字,腳本將不會運行,並且警報將熄滅。但是,還有什麼其他方式可以導入一個模塊並做惡意的事情嗎?
這是可能的,但非常困難的;很容易錯過某些東西。 – katrielalex