Índice das dicas

Dicas de segurança para o PHP em um servidor LAMP

Por Carlos E. Morimoto em 16 de novembro de 2010 às 14h40

1

O interpretador php é configurado através do arquivo "php.ini", um longo arquivo de configuração que permite ativar ou desativar opções diversas da linguagem, como por exemplo a possibilidade de fazer upload de arquivos através de scripts colocados nas páginas.

A localização do arquivo pode variar de acordo com a distribuição, mas você pode encontrá-lo rapidamente usando o comando "locate". No caso do CentOS, o arquivo é o "/etc/php.ini", enquanto nas distribuições derivadas do Debian é usado o arquivo "/etc/php5/apache2/php.ini".

Para melhorar a segurança, é recomendável desativar as funções "show_source", "system", "shell_exec", "passthru", "exec", "popen", "proc_open", "symlink", o que pode ser feito através da opção "disable_functions =", disponível (no Debian Etch) na linha 224 do arquivo. Basta adicionar a lista das funções, como em::

disable_functions = show_source, system, shell_exec, passthru, exec, popen, proc_open, symlink

Outras opções que é recomendável manter desativadas dentro do arquivo são:

expose_php = Off
register_globals = Off
allow_url_fopen = Off
allow_url_include = Off

A opção "allow_url_fopen" permite abrir ou processar uma página ou arquivo externo dentro do script php. Embora ela seja uma função útil, usada por scripts que geram uma lista de links a partir de um feed, por exemplo, ela pode ser usada para diversos tipos de abusos, o que faz com que ela seja desativada em diversos serviços de hospedagem, como no caso do Dreamhost.

Ao tentar executar algum script em PHP que dependa da função, você receberá um erro similar a:

Warning: file_get_contents() [function.file-get-contents]: URL file-access is 
disabled in the server configuration in /var/ww/site/rss.php on line 59

Nesse caso, você tem duas opções. Ou volta a ativar a opção dentro do arquivo, substituindo a linha "allow_url_fopen = Off" por "allow_url_fopen = On" (é necessário reiniciar o serviço do Apache para que a alteração entra em vigor) ou reescreve o script usando a função "cURL", para que o script baixe o arquivo antes de processá-lo.

Outra dica é que além do pacote básico, existem diversos módulos e add-ons para o PHP, disponíveis através de pacotes complementares, como o "php5-gd" (usado por diversos scripts de CAPTCHA, os verificadores onde o usuário precisa digitar o texto contido na imagem) e o "php5-mcrypt" (uma biblioteca com funções de encriptação e desencriptação). Você pode começar com o pacote básico e ir instalando os pacotes adicionais conforme for precisando deles.

1 comentárioPor Carlos E. Morimoto. Revisado 16 de novembro de 2010 às 14h41

Comentários

HTML5 + PHP = WebApp
por Marcelo (anônimo) em 16 de novembro de 2010 às 21h50
PHP-GD tambem e muito usado para gerar miniaturas de fotos ou mesmo editar fotos em cojunto com o canvas do HTML5