Python在不受信任字符串上的val()安全性?如果我正在使用val()計算Python字符串,并且有一個類,如下所示:class Foo(object):
a = 3
def bar(self, x): return x + a如果我不信任字符串,安全風險是什么?特別是:是eval(string, {"f": Foo()}, {})不安全?也就是說,您能從foo實例中找到os或sys或不安全的東西嗎?是eval(string, {}, {})不安全?也就是說,我可以完全從len和list之類的內置程序中訪問os或sys嗎?是否有一種方法可以使內建物在val上下文中完全不存在?有一些不安全的字符串,如“[0]*100000000”,我不關心,因為最壞的情況下,它們會減慢/停止程序。我主要關心的是保護程序外部的用戶數據。顯然,eval(string)沒有自定義詞典在大多數情況下是不安全的。
Python在不受信任字符串上的val()安全性?
幕布斯6054654
2019-07-22 09:40:28