Aplicativos PHP seguras com suexec
Se seu aplicativo é executado em Apache (como mais da metade dos sites na Internet o fazem), você pode querer considerar permitindo suexec na sua configuração do Apache. suexec é um mecanismo que é empacotado com Apache que faz com que os scripts sejam executados como o usuário que possui o script, ao invés de executá-los como o usuário do servidor web.
Em um ambiente não-suexec, todos os scripts são executados como o mesmo ID de usuário do servidor web em si. Infelizmente, um roteiro vulneráveis pode dar um usuário malicioso acesso back-porta para todo o servidor web, incluindo scripts rodando em outros sites hospedados no mesmo servidor.
Suexec procura mitigar este problema, restringindo aplicações web para suas próprias áreas e executá-los sob IDs de usuário de seus donos, e não sob ID do usuário do servidor web. Por exemplo, este script seria executado sob o ID do usuário jsmith:
/home/~jsmith/public_html/scripts/please_hack_me.php
Um utilizador mal intencionado poderia explorar esse script, mas ele ou ela teria acesso somente a arquivos e programas que o jsmith usuário tem permissão para usar. Todos os outros usuários no servidor estaria protegido de jsmith'S roteiro inseguro.
Infelizmente, ficando suexec para funcionar corretamente com hosts virtuais, ou vários sites independentes localizados fisicamente no mesmo servidor web, pode ser complicado. Suexec é projetado para executar scripts que existem na raiz de documentos do servidor web.
A maioria dos hosts virtuais são criados de uma forma que dá a cada site individualmente a sua própria raiz do documento e documento raiz de cada site não está localizado na raiz de documentos do servidor web. Para contornar esta restrição, o administrador do sistema deve adicionar raiz do documento de cada host virtual à variável raiz de documentos do servidor web no arquivo de configuração Apache.
Suexec também exige que os scripts PHP ser executado como Common Gateway Interface (CGI), que é mais lento do que rodando o PHP como um módulo pré-compilado no Apache. CGI foi o primeiro modelo viável para aplicações web, e ainda é usado para scripts simples. No entanto, depois de deixar o reino da criação de scripts PHP e começar a escrever aplicações de pleno direito, você vai precisar do impulso de PHP pré-compilado desempenho.
Para servidores web bastante simples, suexec pode manter uma aplicação insegura de atropelamento tudo sobre tudo o resto. No entanto, em um ambiente mais complexo, com servidores virtuais, módulos pré-compilados, e dezenas ou centenas de usuários, você precisa de um modelo de segurança que é um pouco mais robusto.