【发布时间】:2017-12-10 19:07:07
【问题描述】:
有没有办法真正获取格式良好的输入并在适当的时间执行它?
类似:
num = 5
command = input()
# do something with command
现在,如果我输入"print(num)" 作为输入,它应该输出
5
【问题讨论】:
-
对于java,有beanshell:beanshell.org它允许解释Java源代码。
-
在有人输入格式化您的硬盘驱动器或安装键盘记录器的程序之前,一切都是乐趣和游戏。始终以特权运行。
-
eval或exec的输入不仅格式必须正确,而且必须来自受信任的来源。eval和exec通常应避免使用,因为它们可能存在安全风险。有关详细信息,请参阅 SO 老将 Ned Batchelder 的Eval really is dangerous。另请注意,eval/exec慢。 -
“格式良好的输入”在现实世界中并不是一个明智的假设。除非你能证明它是好的,否则把每一个输入都当作坏的。
-
优秀的链接,PM 2Ring。正是我想要的。它不仅回答了我的问题,不仅陈述了风险,还给了我避免此类风险的想法。再次感谢!