Instalando como um módulo do Apache

Quando o PHP é usado como um módulo do Apache ele herda as permissões de usuários do Apache (tipicamente aquelas do usuário "nobody" (ninguém)). Isto tem impactos severos na segurança e autorização. Por exemplo, se você está usando o PHP para acessar um banco de dados, a menos que o banco de dados tenha nele controle de acesso, você terá que fazer o acesso ao banco de dados para o usuário "nobody" (ninguém). Isto significa que um script malicioso poderia acessar e modificar o banco de dados, sem login e senha . É inteiramente possível que "web spider" (ferramenta de programas de busca que atualizam a sua base de dados através de navegação na rede e na procura de páginas novas) poderia esbarrar no banco de dados da página do adminstrador. e eliminar tudo de seus bancos de dados. Você pode se proteger contra isto com a autorização do Apache, ou você pode desenvolver seu próprio modelo de acesso usando LDAP, arquivos ???, etc. e incluir esse código como parte de seus scripts PHP.

Muitas vezes, logo que a segurança está estabelecida para o ponto onde o usuário PHP (neste caso, o usuário do Apache) tem pouquíssimo risco ligado, é revelado que o PHP está agora prevenido de escrever quaisquer arquivos para diretórios de usuários. Ou talvez ele seja impedido de acessar ou mudar banco de dados. Issi tem sido igualmente assegurado da escrita de arquivos bons e maus, ou entradas de transações a banco de dados boas ou más.

Um erro de segurança comum feito desta forma é permitir acesso ao root do apache, ou expandir as habilidades do apache em algum outro caminho.

Aumentar as permissões do usuário do apache para root é extremamente perigoso e pode comprometer todo o seu sistema, então utilizar o sudo(permitindo a um usuário realizar alguma tarefa como root) ou o chroot(mudando o diretório raíz do sistema) ou qualquer outra forma de executar como root não seria considerado por pessoas que não são profissionais em segurança.

Há algumas soluções mais simples. Ao usar open_basedir você pode controlar e restringir quais os diretórios são permitidos para ser usado pelo PHP. Você pode também definir áreas de somente-apache, para restringir para não-usuário toda atividade baseada em web, ou não-sistema, para os arquivos.