为了账号安全,请及时绑定邮箱和手机立即绑定

Python在不受信任字符串上的val()安全性?

Python在不受信任字符串上的val()安全性?

幕布斯6054654 2019-07-22 09:40:28
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)没有自定义词典在大多数情况下是不安全的。
查看完整描述

3 回答

?
慕运维8079593

TA贡献1876条经验 获得超5个赞

您不能用这样的黑名单方法来确保val的安全。看见伊瓦尔真的很危险对于将对CPython解释器进行分段故障的输入示例,请提供对您喜欢的任何类的访问,以此类推。


查看完整回答
反对 回复 2019-07-22
  • 3 回答
  • 0 关注
  • 617 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信