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之類的內(nèi)置程序中訪問os或sys嗎?是否有一種方法可以使內(nèi)建物在val上下文中完全不存在?有一些不安全的字符串,如“[0]*100000000”,我不關(guān)心,因為最壞的情況下,它們會減慢/停止程序。我主要關(guān)心的是保護程序外部的用戶數(shù)據(jù)。顯然,eval(string)沒有自定義詞典在大多數(shù)情況下是不安全的。
添加回答
舉報
0/150
提交
取消