使用python的val()与ast.pacal()?我遇到了一些代码eval()找到了一个可行的解决方案。现在我从来没有用过eval()但是,在此之前,我遇到了很多关于它可能造成的潜在危险的信息。尽管如此,我对使用它还是非常谨慎的。我的情况是,我的输入是由用户提供的:datamap = raw_input('Provide some data here: ')哪里datamap需要一本字典。我四处搜寻发现eval()能解决这个问题。我想,在尝试使用数据之前,我可能能够检查输入的类型,这将是一种可行的安全预防措施。datamap = eval(raw_input('Provide some data here: ')if not isinstance(datamap, dict):
return我读了一遍文档,还不清楚这是否安全。在数据输入后还是在datamap变量被调用?是ast模块的.literal_eval()唯一安全的选择?
3 回答
子衿沉夜
TA贡献1828条经验 获得超3个赞
ast.literal_eval()
提供的字符串或节点可能只包含以下Python文字结构:字符串、数字、元组、列表、迪克、布尔和无。
__import__('os').system('rm -rf /a-path-you-really-care-about')
ast.literal_eval()
eval()
ast.literal_eval()
犯罪嫌疑人X
TA贡献2080条经验 获得超4个赞
eval(raw_input(...))
eval
eval
ast.literal_eval
.
__import__('os').system('rm -rf /a-path-you-really-care-about')
添加回答
举报
0/150
提交
取消