我有一个 PHP 应用程序,它接受用户输入的 $imageurl 并执行以下操作:
exec('convert "'.$url.'" -thumbnail 80x500 "images/out.jpg"');
现在显然我必须采取一些预防措施来阻止用户执行任意代码。例如,如果用户设置$url
为";rm -rf *;"
根本不好。
所以对于初学者来说,我必须过滤掉"
,这样无论他们输入什么,他们都不能从他们的输入中逃脱,成为convert
. 但是我也应该过滤掉;
吗?我见过带有分号的网址......虽然分号在这里确实很危险,但过滤掉"
仍然可以保证我的安全,对吗?但是网址可以包含"
在其中吗?还有其他我应该注意的角色吗?
也许我应该尝试逃避它们,而不是过滤掉字符。那么我应该尝试转义 shell 专门解释的每个字符吗?或者只是逃避"
,因为其他一切都是“预先转义”的,因为它在双引号内?
对不起,我漫无目的的困惑,我只是这方面的新手,想保持安全!
谢谢,
马拉