Como posso impedir que os scripts de um usuário acessem qualquer coisa acima da pasta do usuário?

1

Esta é provavelmente uma pergunta extremamente simples de responder para qualquer um que saiba o que está fazendo, mas não consigo encontrar respostas. Eu estou tentando configurar um subdiretório para o meu bom amigo para testar seus scripts PHP no meu plano de hospedagem (Apache). Eu não quero permitir que ele acesse qualquer outra coisa no meu servidor, por razões óbvias.

Seu login no FTP já o leva ao diretório apropriado, que não permite navegar mais alto que o root (mydomain.com/friend/). Eu gostaria que o mesmo comportamento fosse aplicado a qualquer script, então ele não pode simplesmente

<?php print_r(glob("../*")); ?>

e veja todos os meus arquivos. Eu estou pensando que isso pode ser feito com um arquivo .htaccess definindo o DocumentRoot em algum lugar, mas eu não posso ter o arquivo disponível para modificação dentro do diretório do usuário.

Isso é possível sem a necessidade de religar o servidor web? Eu tentei usar o Google em todos os tipos de coisas para descrever o meu problema, mas sem a terminologia correta, tudo que consigo é sites de "hospedagem compartilhada" e pessoas tentando me vender pacotes de segurança.

    
por Scott 04.06.2014 / 06:18

1 resposta

1

Você pode usar o parâmetro open_basedir do PHP. Isso impedirá o acesso do script PHP fora do diretório especificado em open_basedir . Snippet da documentação oficial

open_basedir string

Limit the files that can be accessed by PHP to the specified directory-tree, including the file itself. This directive is NOT affected by whether Safe Mode is turned On or Off.

When a script tries to access the filesystem, for example using include, or fopen(), the location of the file is checked. When the file is outside the specified directory-tree, PHP will refuse to access it. All symbolic links are resolved, so it's not possible to avoid this restriction with a symlink. If the file doesn't exist then the symlink couldn't be resolved and the filename is compared to (a resolved) open_basedir .

    
por 05.06.2014 / 03:29