Protegendo o servidor Apache contra um código PHP pouco confiável?

4

Eu tenho uma situação incomum onde preciso de vários usuários para poder fazer upload e executar código PHP no meu servidor Apache, mas não posso permitir que um usuário acesse a fonte PHP de outro usuário (se exemplos concretos o fizerem melhor, imagine estou hospedando uma competição de programação PHP).

Aqui está o que eu tenho até agora no PHP.ini:

disable_functions = readfile, fpassthru, file, file_get_contents, 
 system, fopen, symlink, rename, copy, exec, passthru, pcntl_exec, 
 backtick_operator, shell_exec, popen, proc_open

Quais outras funções eu precisaria adicionar a esta lista, para evitar que o código PHP acesse arquivos locais (e, portanto, outras fontes PHP?)?

    
por Alex R 20.12.2009 / 04:02

3 respostas

1

Por favor, dê uma olhada no link que executa scripts PHP com permissões de usuário, ao invés do usuário em que o servidor está rodando. Se você tiver certeza de que o servidor pode ler o diretório (mas não necessariamente o próprio arquivo PHP), ele poderá executar esses arquivos com permissões de usuário. Outros usuários não devem ser capazes de ler ou acessá-los nesse caso. Esta deve ser uma maneira mais elegante e segura de lidar com isso.

    
por 03.01.2010 / 12:03
0

Parece que você precisa ativar o Modo de segurança do PHP, isso desativará todas as funções relevantes .

(Observe que isso foi reprimido em 5.3 & removido no PHP6)

    
por 20.12.2009 / 05:07
0

Em vez de tentar lidar com isso dentro do PHP, eu aumentaria uma camada ou duas, e usaria as contas do Apache + unix para segregar as coisas - por exemplo, usando suexec para manter os processos do usuário separados.

    
por 28.12.2009 / 09:46