php exec()具有常量参数,安全吗?

时间:2012-10-11 08:55:01

标签: php exec

我们想在服务器端生成mobi文件。为此,我们需要使用来自亚马逊的kindlegen(从epub生成mobi)。我已经读过启用exec并不完全安全,但我的问题是我是否使用类似

的东西
exec('kindlegen ' . $epubInput . ' -c0 -o ' . $mobiOutput );

有可能出错吗? 两个变量($epubInput$mobiOutput)不是来自用户输入,而是由脚本生成的。 另一个问题(我想这是不可能的),但是有没有设置,允许exec只执行一个特定的文件,在我的情况下kindlegen?

2 个答案:

答案 0 :(得分:1)

这取决于产生这些值的代码是否可以被欺骗以产生邪恶的值。在这种情况下,它看起来真的不一样,但你应该确定。

在调用exec之前,您还应该对这两个参数使用escapeshellarg;当价值在你的控制之下时,这并不是绝对必要的,但没有任何反对意见。

答案 1 :(得分:1)

您应该使用escapeshellarg()来逃避所有参数。这样您就不必担心其他脚本的结果了。