有没有办法改写CodeIgniter的upload.php的库,因为我一直面临笨escapeshellarg()已因安全原因禁止
escapeshellarg()已因安全原因
我禁用已经试过this thread的解决方案,把@放在escapeshellarg的前面,但仍然无法上传我的图像,这只是忽略了警告。
我试图联系我的托管提供的管理员,但出于安全原因,他们无法启用它。
有没有我可以欺骗这个,所以我可以上传图片?
有没有办法改写CodeIgniter的upload.php的库,因为我一直面临笨escapeshellarg()已因安全原因禁止
escapeshellarg()已因安全原因
我禁用已经试过this thread的解决方案,把@放在escapeshellarg的前面,但仍然无法上传我的图像,这只是忽略了警告。
我试图联系我的托管提供的管理员,但出于安全原因,他们无法启用它。
有没有我可以欺骗这个,所以我可以上传图片?
你可以使自己的escapeshellarg
,这是一个很简单的功能,只有逃避给定字符串中的任何单引号,然后将它周围的单引号。
function my_escapeshellarg($input)
{
$input = str_replace('\'', '\\\'', $input);
return '\''.$input.'\'';
}
如果您的提供商有Upload.php
但是需要禁用等功能,你可能是出于运气毕竟。
你可以通过创建一个简单的.php
文件来调用phpinfo()
来查找哪些功能被禁用。 (在所生成的输出搜索disable_functions
)
这与CI没有任何关系。该功能已在php.ini
文件中禁用。禁用各种不安全的功能是非常常见的(从服务器管理员的角度来看)。
如果您使用的是共享主机,那么您可能对此无能为力。尝试询问您的提供商。
如果您可以编辑php.ini
然后打开它,找到disable_functions
字段,并从列表中删除escapeshellarg
。然后重新启动服务器。这应该启用该功能。
如果你仍然有问题,然后问你的供应商是否有可能上传的东西。我的意思是,如果你的提供者有意删除了所有的上传功能,那么你会浪费你的时间寻找一种方法来做到这一点。
我试着问我的供应商管理员escapeshellarg,但对于一些安全原因,他们抵制不启用escapeshellarg函数,我可以欺骗它,就像改变代码,所以我仍然可以上传我的图像? – chipz
我认为找到另一种方式会更容易。例如,是否启用了cURL扩展? –
尝试在系统/库/ upload.php的文件与@escapeshellarg替换escapeshellarg。
它解决了我的问题兄弟。 –
if(DIRECTORY_SEPARATOR!=='\\') \t \t { \t \t \t $ cmd ='file --brief --mime'。 @escapeshellarg($ file ['tmp_name'])。 '2> &1'; –
进入系统/库/ upload.php的
更换
与@escapeshellarg
if (DIRECTORY_SEPARATOR !== '\\')
{ $cmd = 'file --brief --mime ' . @escapeshellarg ($file['tmp_name']) . ' 2>&1';
谢谢@dualed这是行之有效的! – chipz