我有一个脚本调用bash脚本来做一些处理,但是脚本使用用户输入的数据调用bash脚本。PHP文件注入?
我想知道是否有办法确保这个人(这是一个文件上传)不会像;cd /;rm -rf *
追加到文件的末尾。或者其他任何类似的东西。普通的MYSQL注入方法会起作用吗?有更好的选择吗?
我有一个脚本调用bash脚本来做一些处理,但是脚本使用用户输入的数据调用bash脚本。PHP文件注入?
我想知道是否有办法确保这个人(这是一个文件上传)不会像;cd /;rm -rf *
追加到文件的末尾。或者其他任何类似的东西。普通的MYSQL注入方法会起作用吗?有更好的选择吗?
能够注入shell命令将是... shell命令注入,既不是文件也不是SQL注入。为了确保反对它,使用escapeshellarg
:
exec('bash bash-script ' . escapeshellarg($userInput));
你检查escapeshellcmd()将和escapeshellarg()还是我错过了点?
保护这个过程是一个双向过程:
假设我将一个数字传递给程序...
$num = $_GET['num']; // get the input
$num = (int)$_GET['num']; // ensure it is an integer
$num = max($num, 0); // ensure it is at least 0
$num = min($num, 800); // ensure it is at most 800
$num = escapeshellarg($num); // this is overkill at this point, but you never know
exec('command '.$num);
A s以上建议,你也可以有自己的小语言要做到这一点,但...
最后的,还有另一种选择。有些函数接受命令和参数作为单独的参数,例如popen()
(您可以通过管道推送命令参数)。但这取决于实施。
正常的sql注入**不会停止**这。 –
编写您自己的脚本语言,只提供您需要公开的功能。 –
F有什么与MySQL有关呢? – Christian