Como eu desabilito funções em servidores para diretórios particulares?

2

Eu quero desativar algumas funções no servidor para melhorar a segurança do servidor. Eu segui estes passos:

ETAPA: 1 Abra o arquivo php.ini :    vi /etc/php.ini

ETAPA: 2 Encontre disable_functions e defina a nova lista da seguinte forma:     disable_functions = exec, passthru, shell_exec, sistema

ETAPA: 3     serviço httpd restart

Com a ajuda dos passos acima, consigo desativar todas as funções acima. Agora essas funções não estão mais disponíveis no servidor.

Se eu quiser ativar ou desativar essas funções para diretórios específicos, então é possível ou não?

    
por Himanshu Matta 02.04.2013 / 10:32

2 respostas

2

Não é impossível fazer isso de maneira confiável. Como estamos, o php não fornece uma opção para lista branca de determinados diretórios para certas funções. Uma função customizada poderia ser escrita para permitir a execução das funções "proibidas" em certos diretórios, mas isso significa que você deve permiti-las globalmente, e isso não impedirá que os programadores acessem diretamente as funções proibidas.

A configuração disable_functions só está disponível dentro do php.ini, qualquer outra forma de sobrescrevê-lo não é permitida (por exemplo: ini_set ou através das configurações do apache).

Então você realmente tem 2 opções, use ou não, mas não há intermediários.

Fonte: link

E, em particular, isso:

This directive must be set in php.ini For example, you cannot set this in httpd.conf.

@slm Essa é uma estratégia, mas isso não impede que eles saiam do diretório, então seria uma fachada e uma maneira obscura de fazer isso. Mesmo que isso funcione.

    
por 02.04.2013 / 14:31
-1

Acho que você poderia mudar isso e não desabilitar as funções do arquivo php.ini , mas desativá-las em um diretório por diretório em um arquivo .htaccess ou seu arquivo Apache httpd.conf , se estiver usando o Apache como seu servidor web. Outros servidores da Web provavelmente oferecem esse recurso também.

De acordo com esta postagem no blog , você pode substitua as configurações de sinalizador e valor do php em php.ini no seu arquivo .htaccess .

Por exemplo, você pode fazer o seguinte:

# .htaccess in directory X
php_value disable_functions exec,passthru,shell_exec,system

-ou- para reativá-lo:

# .htaccess in directory X
php_value disable_functions null

O texto acima não foi testado por mim, então não tenho certeza se funcionará para você ou não. Também posso entender algumas das confusões em torno desse recurso em PHP . De acordo com a documentação do PHP , não parece que o acima é possível fora do arquivo php.ini .

disable_functions string

This directive allows you to disable certain functions for security reasons. It takes on a comma-delimited list of function names. disable_functions is not affected by Safe Mode.

Only internal functions can be disabled using this directive. User-defined functions are unaffected.

This directive must be set in php.ini For example, you cannot set this in httpd.conf.

    
por 02.04.2013 / 15:29