Codex


Instalado como módulo do Apache

Quando o PHP é usado como módulo do Apache, ele herda as permissões do usuário do Apache (normalmente as do usuário "nobody"). Isso tem vários impactos de segurança e autorização. Por exemplo, se você estiver usando o PHP para acessar um banco de dados, a menos que o banco de dados tenha um controle de acesso interno, você terá que faz o banco de dados acessível ao usuário "nobody". Isso significa que um script malicioso pode acessar e modificar o banco de dados, mesmo sem um usuário e senha. É possível que um web spider pode passar em uma página web de administração do banco de dados e remover todos os bancos de dados. Você pode se proteger contra isso usando autorização do Apache, ou você pode desenvolver seu modelo de acesso prório usando LDAP, arquivos .htaccess, etc. e incluir esse código como parte dos seus scripts PHP.

Normalmente, uma vez que a segurança está estabelecida até esse ponto onde o usuário do PHP (no caso, o usuário apache) tem pouco risco atribuído a ele, você descobre que o PHP não tem permissão de escrita nos diretórios dos usuários. Ou talvez tenha sido proibido de acessar ou alterar bancos de dados. Também foi proibido de escrever arquivos, bons ou ruins, ou fazer transações de bancos de dados, boas ou ruins.

Um erro freqüente de segurança feito até esse ponto é permiter ao apache permissões de administrador (root), ou aumentar as habilidades do apahce de qualquer outra forma.

Aumentar as permissões do usuário do Apache para a de administrador é extremamente perigoso e pode comprometer o sistema inteiro, então sudo'ing, chroot'ing, ou então executar como root não deve ser considerados por aqueles que não são profissionais em segurança.

Existem algumas soluções mais simples. Usando a diretiva open_basedir você pode controlar e restringir quais diretórios o PHP tem permissão de usar. Você também pode configurar area exclusivas para o Apache, restringir todas as atividades web para arquivo que não sejam de algum usuário ou do sistema.