Python 的eval() 對不受信任字串的安全影響
使用eval() 評估不受信任的Python 字串時,會出現一些安全風險:
1。 eval(string, {"f": Foo()}, {})
這是不安全的。透過 Foo 實例,人們可以存取「os」和「sys」等內建元件,這可能會危及系統。
2. eval(string, {}, {})
這也是不安全的。即使沒有明確傳遞字典,「len」和「list」等內建函數也可用於存取其他不安全的 API。
3.禁止內建函數
沒有直接的方法可以完全阻止內建函數出現在 eval() 上下文中。需要對 Python 解釋器進行修補。
其他風險:
像「[0] * 100000000」這樣的惡意字串可能會導致資源耗盡。執行任意表達式可能會危及使用者資料和系統安全。
替代方法:
不要使用 eval(),而是考慮其他方法來處理不受信任的資料。例如:
以上是使用 Python 的 `eval()` 處理不受信任的字串有多安全?的詳細內容。更多資訊請關注PHP中文網其他相關文章!