我们想在服务器端生成mobi文件。为此,我们需要使用来自亚马逊的kindlegen(从epub生成mobi)。我已经读过启用exec并不完全安全,但我的问题是我是否使用类似
的东西exec('kindlegen ' . $epubInput . ' -c0 -o ' . $mobiOutput );
有可能出错吗?
两个变量($epubInput
和$mobiOutput
)不是来自用户输入,而是由脚本生成的。
另一个问题(我想这是不可能的),但是有没有设置,允许exec只执行一个特定的文件,在我的情况下kindlegen?
答案 0 :(得分:1)
这取决于产生这些值的代码是否可以被欺骗以产生邪恶的值。在这种情况下,它看起来真的不一样,但你应该确定。
在调用exec
之前,您还应该对这两个参数使用escapeshellarg
;当价值在你的控制之下时,这并不是绝对必要的,但没有任何反对意见。
答案 1 :(得分:1)
您应该使用escapeshellarg()
来逃避所有参数。这样您就不必担心其他脚本的结果了。