标签: eval

为什么使用JavaScript eval函数是一个坏主意?

eval函数是一种动态生成代码的强大而简单的方法,那么有什么警告呢?

javascript security eval

522
推荐指数
14
解决办法
25万
查看次数

eval,exec和compile之间有什么区别?

我一直在寻找的Python代码动态评估,并遇到了eval()compile()功能,以及exec声明.

有人可以解释之间的区别evalexec怎样的不同模式,compile()适应吗?

python eval dynamic exec

403
推荐指数
3
解决办法
19万
查看次数

Python的eval()做什么?

在我正在阅读Python的书中,它继续使用代码 eval(input('blah'))

我阅读了文档,我理解它,但我仍然没有看到它如何改变input()功能.

它有什么作用?谁能解释一下?

python eval

280
推荐指数
10
解决办法
42万
查看次数

评估以字符串形式给出的表达式

我很想知道R是否可以使用它的eval()功能来执行例如字符串提供的计算.

这是一个常见的情况:

eval("5+5")
Run Code Online (Sandbox Code Playgroud)

但是,而不是10我得到:

[1] "5+5"
Run Code Online (Sandbox Code Playgroud)

有解决方案吗

eval r r-faq

263
推荐指数
7
解决办法
17万
查看次数

什么时候JavaScript的eval()不是邪恶的?

我正在编写一些JavaScript代码来解析用户输入的函数(用于类似电子表格的功能).解析了公式后,我可以将其转换为JavaScript并eval()在其上运行以产生结果.

但是,eval()如果我可以避免它,我总是回避使用,因为它是邪恶的(而且,无论是对还是错,我一直认为它在JavaScript中更加邪恶,因为要评估的代码可能会被用户改变).

那么,什么时候可以使用它?

javascript coding-style eval

253
推荐指数
9
解决办法
8万
查看次数

使用python的eval()与ast.literal_eval()?

我有一些代码的情况,eval()作为一种可能的解决方案.现在我从来没有使用eval()过,但是,我已经发现了很多关于它可能造成的潜在危险的信息.也就是说,我对使用它非常谨慎.

我的情况是我有一个用户给出的输入:

datamap = raw_input('Provide some data here: ')
Run Code Online (Sandbox Code Playgroud)

哪里datamap需要是字典.我四处搜索,发现eval()可以解决这个问题.我认为在尝试使用数据之前我可以检查输入的类型,这将是一个可行的安全预防措施.

datamap = eval(raw_input('Provide some data here: ')
if not isinstance(datamap, dict):
    return
Run Code Online (Sandbox Code Playgroud)

我仔细阅读了文档,但我仍然不清楚这是否安全.eval在输入或datamap调用变量后立即评估数据吗?

ast模块是.literal_eval()唯一安全的选择吗?

python eval abstract-syntax-tree

154
推荐指数
6
解决办法
14万
查看次数

Bash中的eval命令及其典型用法

阅读了bash手册页和关于这篇文章.

我仍然无法理解eval命令究竟是什么以及它的典型用途.例如,如果我们这样做:

bash$ set -- one two three  # sets $1 $2 $3
bash$ echo $1
one
bash$ n=1
bash$ echo ${$n}       ## First attempt to echo $1 using brackets fails
bash: ${$n}: bad substitution
bash$ echo $($n)       ## Second attempt to echo $1 using parentheses fails
bash: 1: command not found
bash$ eval echo \${$n} ## Third attempt to echo $1 using 'eval' succeeds
one
Run Code Online (Sandbox Code Playgroud)

这里究竟发生了什么,美元符号和反斜杠如何与问题相关联?

linux bash shell scripting eval

152
推荐指数
5
解决办法
33万
查看次数

为什么eval邪恶呢?

我知道Lisp和Scheme程序员通常会说eval除非必要,否则应该避免.我已经看到了几种编程语言的相同建议,但我还没有看到一个反对使用的明确论据列表eval.我在哪里可以找到使用中潜在问题的说明eval

例如,我知道GOTO程序编程中的问题(使程序难以理解且难以维护,难以找到安全问题等),但我从未见过反对的论点eval.

有趣的GOTO是,相反的论点应该对延续有效,但我看到Schemers,例如,不会说延续是"邪恶的" - 你在使用时应该小心.他们更倾向于使用代码而eval不是代码使用continuation(据我所知 - 我可能是错的).

lisp scheme eval clojure common-lisp

141
推荐指数
8
解决办法
1万
查看次数

Java中是否有eval()函数?

我有一个像下面这样的字符串:

String str = "4*5";
Run Code Online (Sandbox Code Playgroud)

现在我必须20通过使用字符串来获得结果.

我知道在其他一些语言中,这个eval()功能会做到这一点.我怎么能用Java做到这一点?

java eval

140
推荐指数
8
解决办法
15万
查看次数

为什么{} + {}仅在客户端是NaN?为什么不在Node.js?

虽然[] + []是一个空字符串,[] + {}"[object Object]",{} + []0.为什么是{} + {}NaN?

> {} + {}
  NaN
Run Code Online (Sandbox Code Playgroud)

我的问题是不是为什么({} + {}).toString()"[object Object][object Object]"同时NaN.toString()"NaN",这部分在这里有一个答案已经.

我的问题是为什么这只发生在客户端?在服务器端(Node.js){} + {}"[object Object][object Object]".

> {} + {}
'[object Object][object Object]'
Run Code Online (Sandbox Code Playgroud)

总结:

在客户端:

 [] + []              // Returns ""
 [] + {}              // Returns "[object Object]"
 {} + []              // …
Run Code Online (Sandbox Code Playgroud)

javascript eval node.js web-developer-toolbar google-chrome-devtools

135
推荐指数
1
解决办法
4700
查看次数