Pergunta

Por exemplo. É mais seguro usar mod_php em vez de php-cgi?Ou é mais seguro usar mod_perl em vez do tradicional cgi-scripts?

Estou interessado principalmente em questões de segurança, mas a velocidade pode ser um problema se houver diferenças significativas.

Foi útil?

Solução

Segurança em que sentido?De qualquer forma, isso realmente depende de qual script está sendo executado e quão bem ele foi escrito.Muitos scripts hoje em dia são incompletos e não fazem a validação de entrada corretamente.

Eu pessoalmente prefiro FastCGI ao mod_php, pois se um processo FastCGI morrer, um novo será gerado, enquanto eu vi o mod_php matar todo o Apache.

Quanto à segurança, com FastCGI você poderia tecnicamente executar o processo php sob um usuário diferente do usuário padrão dos servidores web.

Por outro lado, se você estiver usando o novo suporte de threading de trabalho do Apache, certifique-se de não estar usando mod_php, pois algumas das extensões não são thread-safe e causarão condições de corrida.

Outras dicas

Se você executar seu próprio servidor, siga o caminho do módulo, será um pouco mais rápido.Se você estiver em um servidor compartilhado, a decisão já foi tomada por você, geralmente no lado CGI.A razão para isso são as permissões do sistema de arquivos.O PHP como um módulo é executado com as permissões do servidor http (geralmente 'apache') e, a menos que você possa chmod seus scripts para esse usuário, você deve chmod-los para 777 - legível mundialmente.Isso significa, infelizmente, que seu servidor vizinho pode dar uma olhada neles - pense onde você armazena a senha de acesso ao banco de dados.A maioria dos servidores compartilhados resolveu isso usando coisas como phpsuexec e outros, que executam scripts com as permissões do proprietário do script, para que você possa (deve) ter seu código modificado para 644.Phpsuexec roda apenas com PHP como CGI - isso é mais ou menos tudo, é apenas uma coisa de máquina local - não faz diferença para o mundo em geral.

A maioria das falhas de segurança ocorre devido a uma programação ruim no próprio script, então é realmente discutível se eles forem executados como cgi ou em módulos.Dito isto, os módulos do Apache podem potencialmente travar todo o servidor da web (especialmente se estiver usando um MPM encadeado) e o mod_php é famoso por isso.

cgi será mais lento, mas hoje em dia existem soluções para isso, principalmente FastCGI e amigos.

Qual é o seu modelo de ameaça?

Do documento PHP install.txt para PHP 5.2.6:

Os módulos de servidor fornecem desempenho significativamente melhor e funcionalidade adicional em comparação com o binário CGI.

Para IIS/PWS:

Aviso

Ao usar a configuração do CGI, seu servidor está aberto a vários ataques possíveis.Leia nossa seção de segurança do CGI para aprender a se defender desses ataques.

Um módulo como mod_php ou FastCGI é incrivelmente mais rápido que CGI simples.apenas não faça CGI.Como já foi dito, o próprio programa PHP é a maior ameaça à segurança, mas ignorando que há uma outra consideração, em hosts compartilhados.

Se o seu script estiver em um host compartilhado com outros programas php e o host não estiver sendo executado em modo de segurança, é provável que todos os processos do servidor estejam sendo executados pelo mesmo usuário.Isso pode significar que qualquer outro script php pode ler o seu próprio, incluindo senhas de banco de dados.Portanto, certifique-se de investigar a configuração do servidor para ter certeza de que seu código não pode ser lido por outras pessoas.

Mesmo se você controlar sua própria hospedagem, lembre-se de que outro aplicativo da web hackeado no servidor pode ser um canal para outros.

Usar um módulo integrado definitivamente será mais rápido do que usar CGI.As implicações de segurança dependem da configuração.Na configuração padrão eles são praticamente os mesmos, mas o cgi permite algumas configurações mais seguras que os módulos internos não podem fornecer, especialmente no contexto de hospedagem compartilhada.Contra o que exatamente você deseja se proteger?

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top