Como permitir que apenas um site use a função exec () do PHP

1

Eu tenho um Apache simples com o servidor mod_php no CentOS 7. Desativei a função exec no php.ini, mas preciso usá-la em um Vhost. Agora, obviamente, eu sei que não posso usar vários arquivos php.ini e sei que não posso alterar a configuração disable_functions fora do arquivo php.ini, então tentei brincar com outras ideias.

Obviamente, minha primeira opção foi usar fastcgi, ou suPHP, etc., mas não consegui fazê-los funcionar sem quebrar o servidor e, embora eu provavelmente pudesse fazê-los funcionar, prefiro encontrar uma solução diferente e ficar com o simples mod_php.

Meu segundo pensamento foi instalar o Nginx e php-fpm e fazê-lo escutar em outra porta, mas apesar de definir disable_functions para um valor vazio, ele ainda leu o arquivo php.ini e desativou a função php_exec. / p>

Então, existe uma maneira relativamente simples de conseguir isso sem precisar redefinir o Apache com o fastcgi?

    
por MyNameWouldGoHere 19.01.2016 / 17:41

1 resposta

1

Bem, eu tenho uma resposta muito boa, graças aos apontadores de Aaron

Instale o Suhosin usando este

yum install php-devel

wget http://download.suhosin.org/suhosin-0.9.33.tgz

tar -xvf suhosin-0.9.33.tgz

cd suhosin-0.9.33

phpize

./configure

make

make install

echo 'extension=suhosin.so' > /etc/php.d/suhosin.ini

service httpd restart

yum install php-devel

yum install php-suhosin

Adicione isso ao final do arquivo php.ini (uma lista de funções para a lista negra):

suhosin.executor.func.blacklist = “exec,passthru,shell_exec,system,proc_open,popen,curl_exec,curl_multi_exec,parse_ini_file,show_source”

Finalmente, para o VirtualHost que deve permitir usar as funções desativadas, adicione isto:

php_admin_value suhosin.executor.func.blacklist =

Suhosin força um script a sair quando atinge uma função que está na lista negra, em vez de ignorar a função como a configuração das funções de desativação nativas.

    
por 19.01.2016 / 18:30